Python CSV 编写器截断长数字

Posted

技术标签:

【中文标题】Python CSV 编写器截断长数字【英文标题】:Python CSV writer truncates long numbers 【发布时间】:2017-02-02 16:03:40 【问题描述】:

我目前正在处理一个项目,该项目需要生成一个包含一堆信息的 CSV 文件作为最终输出。我目前将所有数据存储在一个非常大的列表中,然后使用 CSV 包将其写入 CSV 文件。我的问题是其中一个数据字段包含一个存储为字符串的非常长的数字,但第 15 位之后的任何数字都被替换为 0。我已经使用调试器逐步完成,并且该数字在列表中正确表示一直到将其写入 CSV 文件为止。

这是我的 CSV 写入器方法:

b = open('phoneTest4.csv', 'wb')
a = csv.writer(b, dialect="excel")
a.writerows(List)
b.close()

列表实际上是一堆子列表,每个子列表代表一个项目和与该项目关联的元数据。子列表的格式如下:

["20120402180644691","Some Text", "Another number"]

在最终的 CSV 文件中,第一个数字存储为“20120402180644600”,而不是实际数字。我以前从未使用过 CSV 模块,Python 文档似乎没有说明字符串/整数长度限制

【问题讨论】:

我打赌你已经在excel下打开了结果文件。尝试以文本模式打开它,你会看到它是好的。 你找错地方了 :) 这是 Excel 的限制。例如,请参阅here。 Excel 实际上是一个非常糟糕的 CSV 查看器。我尽可能少地依赖它。 @roganjosh 谢谢,没有意识到 Excel 有这个问题。 至少对我来说,将明确写为字符串的内容解释为数值是违反直觉的。也许在大多数情况下它很方便,但我并不热衷于此。 【参考方案1】:

原来 Excel 在显示大数字方面存在限制,CSV 编写器模块没有问题。

【讨论】:

以上是关于Python CSV 编写器截断长数字的主要内容,如果未能解决你的问题,请参考以下文章

Python CSV 编写器空行

Python 2 CSV 编写器在 Windows 上产生错误的行终止符

如何在 Python 3 中将 CSV 编写器与 GZIP 文件一起使用?

Python pandas 带有 to_csv 的大浮点数

python csv writer用科学计数法写入数组

从csv文件导入python时如何替换数字