gpt4 book ai didi

python - DictReader 上的 Filter()

转载 作者:行者123 更新时间:2023-12-01 05:16:37 24 4
gpt4 key购买 nike

我是 python 新手,尝试理解如何使用 csv.DictReader 上的过滤器函数来过滤 csv 文件中的行。 filter()可以用于“可迭代”,据我了解 DictReader适合这个definition .

但是当我尝试时

f = open('file1.csv', 'r')       
dialect = csv.Sniffer().sniff(f.read(1024))
f.seek(0)
reader = csv.DictReader(f, None, None, None, dialect)

filteredReader = filter(None, reader) #None will be replaced with my function
for i in filteredReader:
print(i)

我得到TypeError:normcase()参数必须是str或bytes,而不是'DictReader'

请注意,我不想过滤文件指针 ( e.g. here ),而是过滤已解析的 csv 行。您知道如何做到这一点吗?

最佳答案

是的,DictReader() 可以用作迭代,并且可以与 filter() 一起使用。

filter() 函数依次传递每一行(字典),如果该函数为该行返回 True,则传递该行:

>>> from io import StringIO
>>> import csv
>>> demo = StringIO('''\
... foo,bar,baz
... 42,88,131
... 17,19,23
... ''')
>>> reader = csv.DictReader(demo)
>>> def only_answers(row):
... return '42' in row.values()
...
>>> for row in filter(only_answers, reader):
... print(row)
...
{'baz': '131', 'bar': '88', 'foo': '42'}

关于python - DictReader 上的 Filter(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23064491/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com