Python生成CSV时Excel误将小数识别为日期的解决方法
解决CSV中小数被Excel识别为日期的问题
针对你遇到的场景——所在地区以逗号作为小数分隔符、句号作为日期分隔符,Python写入CSV时类似1.2的数值会被Excel误判为日期,这里提供两种无需修改用户Excel设置的可行方案:
方法一:用Excel公式形式写入数值
将每个数值格式化为="x.y"的形式写入CSV,Excel会自动解析并显示纯数值x.y,不会识别为日期。这种方式复制单元格值时直接得到原始数值,无额外字符干扰。
示例代码:
import csv def format_for_excel(num): return f'="{num}"' values = [1.2, 2.502, 3.63, 4.001, 5.667, 6.23] formatted_values = [format_for_excel(v) for v in values] with open("testfile.csv", 'w', newline='') as csv_file: csv_writer = csv.writer(csv_file, delimiter=';') csv_writer.writerow(formatted_values)
方法二:添加单引号前缀
在数值字符串前加一个单引号',Excel会将其视为纯文本显示数值;编辑时单引号仅在编辑栏可见,复制单元格内容时不会包含该单引号。
示例代码:
import csv values = [1.2, 2.502, 3.63, 4.001, 5.667, 6.23] formatted_values = [f"'{v}" for v in values] with open("testfile.csv", 'w', newline='') as csv_file: csv_writer = csv.writer(csv_file, delimiter=';') csv_writer.writerow(formatted_values)
补充说明
- 方法一的公式形式在非Excel的CSV阅读器中可能显示为
="x.y",若需兼容多工具,方法二更通用。 - 两种方案都无需调整系统或Excel的区域设置,也不用改变你当前的小数分隔符使用习惯。
内容的提问来源于stack exchange,提问作者Moris
相关产品推荐
相关产品推荐

