python-3.x - 从文件 Python 中提取/分离具有重复值和唯一值的记录
问题描述
我有一个具有以下值的输入文件:
file1.txt
Name ID Code
ABC 12 322
QWE 97 214
ASD 86 111
FGH 12 322
RTY 86 322
BNM 86 214
POK 12 111
MKI 33 322
我想根据ID
. 当上述文件作为输入给出时,输出将是:
第一个文件
12.txt
ABC 12 322
FGH 12 322
POK 12 111
第二个文件
97.txt
QWE 97 214
第三个文件
86.txt
ASD 86 111
RTY 86 322
BNM 86 214
第四档
33.txt
MKI 33 322
所有具有相同 ID 的记录将存储在一个文件中,如果没有重复则存储在另一个文件中。文件名应该是ID.txt
.
.txt File
由于输入是补充性的,并且在 txt 文件中存在字符,因为每个空格都有一些值。
谢谢
解决方案
您可以通过使用collections.defaultdict、csv.DictReader和csv.DictWriter来实现这一点。首先,您必须遍历数据并根据ID
. 我建议使用 aDictReader
和 a defaultdict
(使用 ID 作为键)来简化您的代码。如果您已将所有行存储到 中dict
,则可以将数据写入单独的文件中。
应该执行以下操作:
import csv
from collections import defaultdict
# store all rows as a `list` indexed by the ID
data = defaultdict(list)
with open('file.csv') as fh:
reader = csv.DictReader(fh, delimiter=' ', skipinitialspace=True)
for row in reader:
data[row['id']].append(row)
# Write rows to different files based on the ID
for id_, rows in data.items():
fieldnames = rows[0].keys()
with open(f'{id_}.txt', 'w') as fh:
writer = csv.DicWriter(fh, delimiter=' ', fieldnames=fieldnames)
writer.writeheader()
writer.writerows(rows)
推荐阅读
- php - 如何使用 PHP 7.0 访问元素 _product
- javascript - 将 2D 圆表示为 1D 数组(出租车几何,冯诺依曼邻域)
- reactjs - 反应:登录按钮下降到重定向登录/注销
- javascript - 如何定位我应该响应的自定义轮播小部件部分
- ios - 反应本机 ios 警报,相互覆盖
- aem - 自定义 AEM OOTB 表组件
- javascript - 动态使用 webfont 图标作为输入字段中的占位符
- solidity - 错误:uint128类型调用智能合约变量数据不足
- google-apps-script - 无法将 Google 应用脚本发布到 G Suite Marketplace 以供域管理员查找
- powershell - Select-Object -ExpandProperty 与 Get-ItemPropertyValue