我正在尝试将数字字符串写入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文件的事实,它试图用文件的内容做自己的事情。
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正确解析。
当然,这只有在您的值中没有双引号的情况下才有效。
| 归档时间: |
|
| 查看次数: |
2768 次 |
| 最近记录: |