为什么在尝试将csv文件与python脚本进行比较时出现“next(dropwhile)(lambda x:x)”错误?

2024-04-26 20:58:13 发布

您现在位置:Python中文网/ 问答频道 /正文

谢谢你的阅读, 我正在尝试比较两个或多个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

非常感谢您对此事的任何帮助,再次感谢您抽出时间阅读本文!你知道吗


Tags: 文件csvinimportforoutputaddress地址
1条回答
网友
1楼 · 发布于 2024-04-26 20:58:13

^{}中,头行将自动使用并解析为头,这样您就不需要自己跳过头了。如果您只需删除next(dropwhile(lambda x: x['address'] != 'address', csv_reader))行,代码就可以运行了。你知道吗

相关问题 更多 >