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

Python解析CSV文件时如何正确读取分号分隔的内容

解决CSV解析时分隔符混淆的问题

嘿,这个坑我踩过!你遇到的问题根源很明确:Python的csv模块默认把逗号作为字段分隔符,但你的CSV文件实际是用分号来分隔不同字段的,而逗号只是数值里的小数分隔符——这就导致解析时完全打乱了字段结构。

第一步:正确指定字段分隔符

只需要在初始化csv.reader时,通过delimiter参数明确指定分号作为分隔符,就能得到你想要的解析结果:

import csv

with open('parseme.csv') as csv_file:
    # 告诉reader用分号拆分字段
    reader = csv.reader(csv_file, delimiter=';')
    # 读取每一行(你的文件如果只有一行的话,直接取next(reader)就行)
    for row in reader:
        print(row)  # 输出: ['21/10/2017 0:00', '123,85', '88,8']

第二步:把带逗号的数值转成数字

拿到正确的字段后,要把123,85这种格式转成整数或浮点数,只需要先把逗号替换成小数点,再做类型转换:

import csv

with open('parseme.csv') as csv_file:
    reader = csv.reader(csv_file, delimiter=';')
    for row in reader:
        date_time = row[0]
        # 转成浮点数后再转整数(如果需要取整)
        value1 = int(float(row[1].replace(',', '.')))
        value2 = int(float(row[2].replace(',', '.')))
        print(f"时间: {date_time}, 数值1: {value1}, 数值2: {value2}")
        # 如果要保留小数,直接转float就行:float(row[1].replace(',', '.'))

为什么原来的代码出错?

默认情况下csv.reader会把逗号当成字段分隔符,所以它会把你的原始行21/10/2017 0:00;123,85;88,8拆成三个部分:

  • 21/10/2017 0:00;123(第一个逗号前的内容)
  • 85;88(两个逗号之间的内容)
  • 8(最后一个逗号后的内容)
    这完全不符合你的实际字段划分,指定delimiter=';'就能解决这个问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:18:11