You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python写入CSV文件浮点数出现千位分隔符问题排查解决

问题原因
  • 问题和Python的csv写入逻辑无关:Python内置csv模块写入浮点数时,会直接输出浮点数的原生字符串表示,不会自动添加千位分隔符。用纯文本编辑器(记事本、VS Code等)打开生成的CSV文件就能验证,文件内存储的数值是正常格式,不存在分隔符错位。
  • 异常来自Excel的默认解析逻辑:如果你的系统区域设置默认将.定义为千位分隔符、,定义为小数点(常见于欧洲部分区域的默认配置),双击直接打开CSV时,Excel会自动套用该区域规则,把原数值里的小数点识别成千位分隔符,最终出现1500.0显示为15.000的错误。
解决方法

方案1:通过Excel导入功能手动指定解析规则(不修改原CSV文件)

不要直接双击打开CSV,按导入流程操作即可正常识别:

  • 新建空白Excel工作簿
  • 点击顶部「数据」选项卡,选择「自文本/自CSV」,选中目标CSV文件
  • 在弹出的导入配置窗口中,将区域设置修改为「中文(中国)」或「英语(美国)」,确认小数点分隔符为.、千位分隔符为,后点击加载,数值即可正常显示。

方案2:写入CSV时格式化数值为固定格式字符串

如果需要双击CSV就能直接在Excel中正常打开,可以在写入环节将浮点数格式化为固定小数位的字符串,规避Excel的错误自动解析,参考代码如下:

import csv
import numpy as np

arr = np.random.rand(10, 10)  # 生成10x10的随机数数组
arr = arr * 1000000  # 将数值放大100万倍
arr_list = arr.tolist()  # 转换为嵌套列表

# 写入CSV时统一格式化浮点数,可按需调整保留的小数位数
with open("arr_list.csv", "w", encoding="UTF8", newline="") as f:
    writer = csv.writer(f)
    for row in arr_list:
        formatted_row = [f"{num:.1f}" for num in row]
        writer.writerow(formatted_row)

方案3:修改系统全局区域设置

如果需要频繁处理小数点为.的CSV文件,可以直接修改系统默认区域格式:

  • Windows系统:打开「设置-时间和语言-语言和区域-管理语言设置-更改系统区域设置」,将格式调整为「中文(简体,中国)」,重启后Excel就会默认以.作为小数点解析文件。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 21:39:50