谢谢你的阅读, 我正在尝试比较两个或多个csv文件,以查看一个地址是否存在于多个文件中。 我尝试使用的csv文件如下所示
测试1.csv
address
5A:BA:2A:83:AA:81
FB:AB:8E:74:3A:EB
测试2.csv
address
5A:BA:2A:83:AA:81
FB:AB:8E:74:3A:EB
我使用的python脚本如下(这是从stackoverflow上的一个类似项目中借用的)
from itertools import dropwhile
from collections import defaultdict
import glob
import csv
fieldnames = ['address']
address = defaultdict(list)
for csv_filename in glob.glob('*.csv'):
with open(csv_filename, 'rb') as f_input:
csv_reader = csv.DictReader(f_input, fieldnames=fieldnames, skipinitialspace=False)
next(dropwhile(lambda x: x['address'] != 'address', csv_reader))
for row in csv_reader:
address[row['address']].append(row)
with open('output.csv', 'wb') as f_output:
csv_writer = csv.DictWriter(f_output, fieldnames=fieldnames, extrasaction='ignore')
csv_writer.writeheader()
for address, rows in sorted(address.items()):
if len(rows) > 1:
csv_writer.writerows(rows)
预期结果是一个新的.csv文件,其地址存在于多个文件中。你知道吗
但是,我收到以下错误代码:
Traceback (most recent call last):
File "match.py", line 12, in <module>
next(dropwhile(lambda x: x['address'] != 'address', csv_reader))
StopIteration
非常感谢您对此事的任何帮助,再次感谢您抽出时间阅读本文!你知道吗
在^{} 中,头行将自动使用并解析为头,这样您就不需要自己跳过头了。如果您只需删除
next(dropwhile(lambda x: x['address'] != 'address', csv_reader))
行,代码就可以运行了。你知道吗相关问题 更多 >
编程相关推荐