0

我正在为我的项目的数据采集阶段编写一个 python 脚本,到目前为止,我一直将数据存储在 .csv 文件中。当我从一个特定的 .csv 文件中读取数据时,我得到了错误:

syntaxError:扫描字符串文字时 EOL

我查看了文件中的特定行,并且特定单元格中的数据被截断。我正在使用 pandas 将 dicts 存储到 csv 并且它从未抛出错误。我猜 .csv 无论如何都会自救,即使这意味着它会在没有任何警告的情况下删除数据。

我想改成.xls。当存储同一行时,出现一个错误(类似于以下内容):

已达到最大字符长度。每个单元格的最大字符长度约为 32k。

然后我认为这可能只是一个 excel/libreoffice calc 问题(我都试过了),他们无法可视化单元格中的数据,但它们实际上就在那里。所以我尝试打印特定的单元格;数据确实被截断了。特定单元格包含一个 dict,其值为 float、int、boolean 或 string。但是,它们都已转换为字符串。

我的问题是,有没有办法在不改变文件格式的情况下修复它?

在我必须更改文件格式的情况下,存储超大文件的合适选择是什么?我正在考虑hdf5。

如果您需要更多信息,请告诉我。谢谢!

4

1 回答 1

1

字段大小有限制

csv.field_size_limit([new_limit])
Returns the current maximum field size allowed by the parser. 
If new_limit is given, this becomes the new limit.

在我的系统(Python 3.8.0)上,我得到:

>>> import csv
>>> csv.field_size_limit()
131072

正好是 128 kB。

您可以尝试将限制设置得更高:

 csv.field_size_limit(your_new_limit)

但是,根据您存储的数据类型,可能会更适应不同的文件格式。

于 2021-03-03T10:51:51.433 回答