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

如何读取CSV文件并将数值中的逗号替换为点

解决方案

问题原因

你查到的decimal=','参数不属于Python标准库csv.reader的可配置参数,该参数是pandas库read_csv方法的专属参数,所以直接添加到原生csv.reader中不会生效。

方案1:修改原生csv读取代码(无需引入第三方库)

直接在读取每行数据后遍历元素替换逗号即可,可根据需求选择是否直接转为数值类型:

仅替换逗号不转类型

for file_to_open in filename:
    file_path = os.path.realpath(file_to_open)
    path_corrected = file_path.replace("file_mngt", "data")
    opened = open(path_corrected)
    reader = csv.reader(opened, delimiter = ";")
    header = next(reader)
    
    for row in reader:
        # 遍历所有元素替换数值中的逗号为点
        processed_row = [item.replace(',', '.') for item in row]
        print(processed_row)

替换后直接转为数值类型

import csv
import os

def convert_num(item):
    # 先替换逗号为点
    item_dot = item.replace(',', '.')
    # 尝试转数值,失败则返回原字符串
    try:
        return int(item_dot) if item_dot.isdigit() else float(item_dot)
    except ValueError:
        return item

for file_to_open in filename:
    file_path = os.path.realpath(file_to_open)
    path_corrected = file_path.replace("file_mngt", "data")
    opened = open(path_corrected)
    reader = csv.reader(opened, delimiter = ";")
    header = next(reader)
    
    for row in reader:
        processed_row = [convert_num(item) for item in row]
        print(processed_row)

方案2:使用pandas读取(自动处理小数点)

如果允许引入第三方库,直接使用pandas的对应参数即可一步完成处理:

import pandas as pd
import os

for file_to_open in filename:
    file_path = os.path.realpath(file_to_open)
    path_corrected = file_path.replace("file_mngt", "data")
    # 直接指定分隔符和小数点符号
    df = pd.read_csv(path_corrected, delimiter=';', decimal=',')
    # 逐行输出示例
    for _, row in df.iterrows():
        print(row.tolist())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 09:54:07