如何在Python中导入包含格式错误的引号的csv文件?



我正在尝试加载以下test.csv文件:

R1C1    R1C2    R1C3
R2C1    R2C2    R2C3
R3C1    "R3C2   R3C3
R4C1    R4C2    R4C3

…使用Python脚本:

import csv

with open("test.csv") as f:
for row in csv.reader(f, delimiter='t'):
print(row)

我得到的结果如下:

['R1C1', 'R1C2', 'R1C3']
['R2C1', 'R2C2', 'R2C3']
['R3C1', 'R3C2tR3C3nR4C1tR4C2tR4C3n']

事实证明,当Python发现一个字段的第一个字符是引号并且没有结束引号时,它将包括以下所有内容作为同一字段的一部分。

我的问题:正确读取文件中所有行的最佳方法是什么?请考虑我使用Python 3.8.5,脚本应该能够读取大文件(2gb或更多),所以内存使用和性能问题也应该考虑。

老实说,如果要处理这么多数据,最好先进行清理。如果可能的话,首先修复产生坏数据的进程。

我还没有测试过一个大文件,但你可能只是能够替换"字符,因为你读取行,假设从来没有一种情况下,他们是有效的字符:

import csv

with open("test.csv") as f:
line_generator = (line.replace('"', '') for line in f)
for row in csv.reader(line_generator, delimiter='t'):
print(row)

输出:

['R1C1', 'R1C2', 'R1C3']
['R2C1', 'R2C2', 'R2C3']
['R3C1', 'R3C2', 'R3C3']
['R4C1', 'R4C2', 'R4C3']

相关内容

  • 没有找到相关文章

最新更新