gpt4 book ai didi

Python DictReader - 跳过缺少列的行?

转载 作者:行者123 更新时间:2023-11-28 18:55:30 25 4
gpt4 key购买 nike

我有一个 Excel .CSV 文件,我正在尝试使用 DictReader 读入。

一切似乎都很好,除了它似乎省略了行,特别是那些缺少列的行。

我们的输入看起来像:

mail,givenName,sn,lorem,ipsum,dolor,telephoneNumber
ian.bay@blah.com,ian,bay,3424,8403,2535,+65(2)34523534545
mike.gibson@blah.com,mike,gibson,3424,8403,2535,+65(2)34523534545
ross.martin@blah.com,ross,martin,,,,+65(2)34523534545
david.connor@blah.com,david,connor,,,,+65(2)34523534545
chris.call@blah.com,chris,call,3424,8403,2535,+65(2)34523534545

所以有些行缺少 lorem/ipsum/dolor 列,它只是一串逗号。

我们正在阅读它:

def read_gd_dump(input_file="blah 20100423.csv"):
gd_extract = csv.DictReader(open('blah 20100423.csv'), restval='missing', dialect='excel')
return dict([(row['something'], row) for row in gd_extract])

而且我检查了“某物”(我们的字典的键)不是缺失的列之一,我最初怀疑它可能是那个。它是之后的其中一列。

但是,DictReader 似乎完全跳过了行。我尝试将 restval 设置为某些东西,似乎没有任何区别。我似乎无法在 Python 的 CSV 文档 ( http://docs.python.org/library/csv.html ) 中找到任何可以解释此行为的内容,但我可能误读了一些内容。

最佳答案

无法重现您的问题 - 当我保存该数据然后分配 list(gd_extract) 时,我看到:

[{'telephoneNumber': '+65(2)34523534545', 'ipsum': '8403', 'sn': 'bay', 'dolor': '2535', 'mail': 'ian.bay@blah.com', 'givenName': 'ian', 'lorem': '3424'}, {'telephoneNumber': '+65(2)34523534545', 'ipsum': '8403', 'sn': 'gibson', 'dolor': '2535', 'mail': 'mike.gibson@blah.com', 'givenName': 'mike', 'lorem': '3424'}, {'telephoneNumber': '+65(2)34523534545', 'ipsum': '', 'sn': 'martin', 'dolor': '', 'mail': 'ross.martin@blah.com', 'givenName': 'ross', 'lorem': ''}, {'telephoneNumber': '+65(2)34523534545', 'ipsum': '', 'sn': 'connor', 'dolor': '', 'mail': 'david.connor@blah.com', 'givenName': 'david', 'lorem': ''}, {'telephoneNumber': '+65(2)34523534545', 'ipsum': '8403', 'sn': 'call', 'dolor': '2535', 'mail': 'chris.call@blah.com', 'givenName': 'chris', 'lorem': '3424'}]

五个指令,包括那些缺少 ipsum 等的指令。我担心您在简化问题的值得称赞的尝试中过度简化了它,以至于您的错误消失了。

如果您在 something 列中有重复项(无法检查,因为您的样本数据中没有该列),这当然可以解释“显然缺少”行——它们并没有从 csv 阅读器返回的流中丢失,它们在你返回的字典中被“覆盖”。这可能是问题所在吗?

关于Python DictReader - 跳过缺少列的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2901422/

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