在处理文件时,我从不同的来源和不同的编码中获取它们。因此,在一个循环中,我遍历列表中可能的编码en_codings = ['utf-8', "cp1250", "cp1251", "cp1252", "latin1", "utf-8-sig"] 并使用发生读取的编码。
任务参数允许你跳过“坏行”,所以我on_bad_lines="skip"在我的pandas版本 1.4.2 中使用了该参数。大多数文件至少以某种方式处理。有时会有一个“损坏”的文件,其中最后一行不包含所有元素。然后,尽管on_bad_lines="skip"给出了错误ParserError: Error tokenizing data. C error: EOF inside string starting at row 4390,尽管在我的理解中它只是不得不被跳过......
附件:csv 文件。但这是最后几行的样子:
如您所见,最后一行已损坏。
我想找到一个pandas.read_csv()可以跳过这种坏行变体的参数组合。我再说一遍 - 问题是它是最后一个......文件中间的相同行通常会被跳过。
哦,是的-Windows 10。
添加。 问题是由于在启动新字段的打开引号之后捕获了文件结尾字符这一事实。如果您使用句柄引用引号,则读取该文件。

在@Namerek 的暗示性回答之后找到了这样的解决方案。
pandas.read_csv- 有一个参数engine默认情况下它被接受为С. 如果我安装python我的文件,则文件通过。所以解决方案如下所示:
这个决定的主要内容是添加了一个新参数
engine='python'。更新。 我承认@Namerek 选项背后的决定。在小文件上,我的版本还不错。但在 1.5GB 时,读取延迟了 40 多分钟。这都是因为这 500 万行是由 Python 代码解析的……
但是通过模块读入字典的技巧可以
csv在一分钟内完成。所以谢谢!!
在英语 SO中,他们建议添加以下选项(分别尝试和一起尝试):
其实
3是这样csv.QUOTE_NONE,但是要写成这种形式,还需要连接一个额外的模块import csv,之后就可以写成更容易理解的形式了quoting=csv.QUOTE_NONE。