为什么csv.writer删除前导零?

tra*_*855 2 python csv

我正在尝试将数字字符串写入CSV文件。一些字符串具有前导零,并且当将字符串写入文件时,前导零会消失。为什么会发生这种情况,我该如何预防呢?

样例代码:

import csv

with open("output.csv", "wb") as f:
    writer = csv.writer(f)
    row = ("01", "02", "03")
    writer.writerow(row)
Run Code Online (Sandbox Code Playgroud)

当我打开时output.csv,已写入的值显示为1,2,3,而不是01,02,03。如果与问题相关,我正在Windows 10 Pro上使用Python 2.7.9。

编辑:看来问题出在我用Excel打开CSV文件的事实,它试图用文件的内容做自己的事情。

Nic*_*ick 8

Microsoft Excel(至少2013年)会将csv文件中的值转换为数字01(例如,如果它们是全数字的),为了解决此问题,您可以强制Excel将值解析为字符串。

您可以使用以下内容:

row = tuple("=\"" + r + "\"" for r in row)
Run Code Online (Sandbox Code Playgroud)

="附加"到每个元素的前面和后面,有效地将其转换为Excel字符串。

>>> row = ("01", "02", "03")
>>> row = tuple("=\"" + r + "\"" for r in row)
>>> row
('="01"', '="02"', '="03"')
Run Code Online (Sandbox Code Playgroud)

这将显示="01",="02",="03"在csv中,并由Excel正确解析。

当然,这只有在您的值中没有双引号的情况下才有效。