Excel将某些十进制数字解释为Python脚本创建的CSV中的日期

zpf6vheq  于 5个月前  发布在  Python
关注(0)|答案(1)|浏览(57)

在我住的地方,逗号通常被用作小数点分隔符,句号是写日期的标准方式。
当我将可以解释为日期的十进制数字写入CSV文件时,当在Excel中打开该文件时,它们会自动显示为日期,因为它假定这是我根据表示日期的标准设置所需要的。例如,下面的代码:

import csv

with open("testfile.csv", 'w', newline='') as csv_file:
    csv_writer = csv.writer(csv_file, delimiter=';')
    csv_writer.writerow([1.2, 2.502, 3.63, 4.001, 5.667, 6.23])

字符串
在Excel中显示为:x1c 0d1x
有没有一种方法可以让所有运行程序的用户正确显示这些值,而不告诉他们更改设置?
我试过在csv.writer构造函数中禁用引号,并在写入之前将浮点数转换为字符串,但这并没有解决问题。一个可行的解决方案是转换为字符串,并在开头添加一个空格字符,但我更倾向于避免这样做,以便从文件中阅读/复制值不那么麻烦。我也不喜欢将小数点分隔符改为逗号。

ef1yzkbh

ef1yzkbh1#

我认为最简单的解决方案是确保数字不匹配日期样式,确保3个小数点:

import csv

with open("testfile.csv", 'w', newline='') as csv_file:
    csv_writer = csv.writer(csv_file, delimiter=';')
    csv_writer.writerow([f"{x:.3f}" for x in [1.2, 2.502, 3.63, 4.001, 5.667, 6.23]])

字符串
如果您不需要文件是CSV,可能有其他解决方案直接通过XlsxWriter等软件包使用xlsx文件格式。

相关问题