gpt4 book ai didi

python - 在 csv.reader 中获取原始行?

转载 作者:行者123 更新时间:2023-12-03 19:45:02 29 4
gpt4 key购买 nike

我正在包装 csv.reader即使遇到格式错误的行(即具有 NULL 字节的行),它也会让读者继续工作。看起来像:

def error_ignoring_csv_reader(csv_reader):
while True:
try:
yield next(csv_reader)
except csv.Error, e:
logger.warning("Got badly formed line with error [%s]" % e)

我真正想做的是将原始有问题的行包含在记录的警告“行格式错误 [actual_raw_line]”中,但是阅读了csv的源代码,我还没有找到任何访问它的方法。是否可以访问我们在 csv.reader 中的原始、未处理的当前行?

最佳答案

虽然我不知道直接在 csv.reader 中访问原始的、未处理的当前行的方法,但这些对象确实提供了 csvreader.line_num属性,可以为获取当前行提供基础。

csv.reader 的 csvfile 参数“可以是任何支持迭代器协议(protocol)并在每次调用其 next() 方法时返回一个字符串的对象”,因此它不必是普通文件。引用文档特别提到了字符串列表作为选项。

如果您可以先将文件读入列表,则可以使用 line_num 属性对列表进行索引,以防出错。或者您可以返回并从文件中重新读取行以找到有问题的行。

或者您可以构建一个自定义的迭代器,它从文件中读取并记住最后一行读取。 (使用最后一种方法,您的代码将创建您的特殊迭代器并将其传递给 csv.reader。在这种情况下,您甚至不需要使用 line_num 属性。)

关于python - 在 csv.reader 中获取原始行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40291685/

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