【发布时间】:2019-05-07 08:22:23
【问题描述】:
我正在尝试将数字字符串写入 CSV 文件。一些字符串有前导零,当字符串写入文件时,前导零消失。为什么会发生这种情况,我该如何预防?
示例代码:
import csv
with open("output.csv", "wb") as f:
writer = csv.writer(f)
row = ("01", "02", "03")
writer.writerow(row)
当我打开output.csv 时,已写入的值显示为1,2,3,而不是01,02,03。
我在 Windows 10 Pro 上使用 Python 2.7.9,如果这与问题相关。
编辑:看来问题出在我用 Excel 打开 CSV 文件这一事实,它试图对文件的内容做自己的事情。
【问题讨论】:
-
您使用二进制模式有什么原因吗?另外,你用什么打开csv? Excel 会自动将值转换为数字,从而删除前导 0。我在记事本等中得到了预期的输出,但可以在 Excel 中使用包含 1->3 的单元格 A1->A3 进行复制
-
FWIW,在 Windows 上使用 Python 2.7.10 它给了我正确的输出,前导零:
01,02,03作为output.csv的唯一行。 -
无法复制,我的文件包含零。
-
@NickA 以二进制模式打开是使用关键字打开的替代方法:
newline='',我不确定它在 2.x 中是否可用 -
@NickA 哇,什么"useless garbage"!