尝试将float写入CSV,但它变为整数

时间:2019-06-21 09:19:08

标签: python excel python-3.x csv

我正在使用python 3创建具有不同数据类型的csv文件,其中之一是float。字符串和整数正确显示在生成的文件上,但是浮点数变为大整数,而不保留小数。例如,64.5232323变为645.232.323

数据按数组组织,我正在使用python的csv模块。这是写入文件的代码:

    index_file_exists = os.path.isfile(full_dir+index_filename)
    with open(full_dir+index_filename, 'a+') as f:
        csv_file = csv.writer(f, delimiter=";")
        csv_file.writerow(index_line)

index_line是包含该行所有数据的数组。我尝试将float转换为格式化的字符串,如:

index_line[12] = "%.5f" % index_line[12]

但是使用Excel打开时,该值仍显示为整数。如果使用记事本之类的文本编辑器打开,则浮点数将正确显示。我不经常使用excel或csv文件,因此我很茫然。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

检查Excel的区域设置/区域。

如果您的地区指定“。”为“千位分隔符”,则格式化后的数字将被视为整数。

并使用str.format()函数,该函数具有对语言环境敏感的格式化程序:

# Python < 3.6
index_line[12] = "{:.5n}".format(index_line[12])

# Python >= 3.6
index_line[12] = f"{index_line[12]:.5n}"