You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何使用Python避免写入CSV文件时数据自动转为日期格式?

解决CSV中"Average"字段被Excel识别为日期的问题

这个问题其实不是你的Python代码导致的——Excel会自动把类似X / Y格式的文本识别成日期(比如10 / 2会被区域设置解析为2月10日,显示为10 Feb),根源是Excel的自动格式识别逻辑,而非CSV文件本身的内容问题。

这里有两种实用的解决办法:

方法1:修改Python代码,强制字段以文本格式写入

你可以在写入"Average"字段时,给它加上一个单引号前缀,Excel会把带单引号前缀的内容识别为纯文本,并且默认不会显示这个单引号。修改后的代码如下:

import csv
# Variable row contains records of all users similar to this below
# ["Name", "City", "Email", "Average", "Total", "Grade", "Remarks"]
with open("file.csv", "a", newline = "") as f:
    writer = csv.writer(f)
    for item in row:
        # 给Average字段(列表索引为3的元素)添加单引号前缀
        item[3] = f"'{item[3]}"
        writer.writerow(item)
# 注意:with上下文管理器会自动关闭文件,不需要手动调用f.close()!

额外提一句:你原代码里的f.close()是多余的,with语句会在代码块结束后自动处理文件关闭,删掉它更符合Python的规范写法。

方法2:在Excel中手动设置文本格式

如果不想修改代码,你可以通过Excel的导入设置来避免自动识别:

  • 打开Excel后,选择「数据」→「自文本/CSV」导入你的文件
  • 在导入预览界面,找到"Average"对应的列,将格式设置为「文本」,再完成导入
  • 或者提前把要存放该列的单元格格式设置为「文本」,再打开CSV文件

这样Excel就不会把10 / 2这类内容转换成日期格式了。

内容的提问来源于stack exchange,提问作者Abhi

火山引擎 最新活动