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

Python读取CSV文件时如何避免拆分引号内的逗号?

正确读取含引号内逗号的CSV内容的方法

方案一:用Python内置csv模块(最稳妥)

Python自带的csv模块原生支持解析带引号的CSV内容,会自动将引号包裹的含逗号内容视为整体,不用自己处理拆分逻辑:

读取CSV文件示例

import csv

# 读取本地CSV文件
with open('your_file.csv', 'r', newline='', encoding='utf-8') as f:
    reader = csv.reader(f)
    for row in reader:
        # row 是处理后的列表,引号内的"Chandler, AZ"会作为单个元素
        print(row)

处理CSV格式字符串示例

如果是处理内存中的CSV格式字符串,也可以用csv.StringIO:

import csv
from io import StringIO

csv_str = '''Name,City,Age
Alice,"New York, NY",30
Bob,"Chandler, AZ",28'''

with StringIO(csv_str) as f:
    reader = csv.reader(f)
    for row in reader:
        print(row)
# 输出结果:
# ['Name', 'City', 'Age']
# ['Alice', 'New York, NY', '30']
# ['Bob', 'Chandler, AZ', '28']

方案二:手动实现拆分逻辑(仅应急用,不推荐)

如果没法用csv模块,可手动判断引号状态来拆分,注意这种方式容易遗漏边缘情况(比如嵌套引号、转义引号):

def split_csv_line(line):
    result = []
    current = []
    in_quotes = False
    for char in line:
        if char == '"':
            in_quotes = not in_quotes
        elif char == ',' and not in_quotes:
            result.append(''.join(current).strip())
            current = []
        else:
            current.append(char)
    # 添加最后一个元素
    result.append(''.join(current).strip())
    return result

# 测试
line = 'Bob,"Chandler, AZ",28'
print(split_csv_line(line))  # 输出 ['Bob', 'Chandler, AZ', '28']

注意:手动实现无法覆盖所有CSV规范场景(比如"He said ""Hello"""这种转义引号),优先用内置csv模块。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 09:49:55