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

如何使用Python移除CSV文件中的双引号并拆分引号内的字段

解决CSV文件移除双引号并拆分引号内字段的问题

嘿,作为Python新手遇到这个CSV解析问题太正常了,我来帮你搞定它!

先明确你的需求:把类似 1 ; "2;3" ; "4;5" ; 6 的行转换成 1,2,3,4,5,6(如果想要带空格的格式,后面我也会提怎么调整)。

你的原代码问题出在 quoting=csv.QUOTE_NONE 和 escapechar='"' 的配置上——这会让csv模块完全忽略双引号的字段包裹作用,没法正确识别引号内的分号是字段内容而非分隔符,自然达不到预期效果。

正确的解决方案

我们可以分两步处理:先让csv模块正确读取带引号的字段,再拆分字段内的分号,最后合并成目标格式。

完整代码如下:

import csv

with open('file.csv', 'r') as csv_file:
    # 配置csv.reader:用分号做分隔符,跳过字段前的空格,让模块自动处理双引号包裹的字段
    csv_reader = csv.reader(csv_file, delimiter=';', skipinitialspace=True)
    next(csv_reader)  # 跳过表头行
    output = []
    for line in csv_reader:
        # 把每个字段拆分成单个元素(有分号就拆分,没有直接保留)
        flattened_fields = []
        for field in line:
            if ';' in field:
                flattened_fields.extend(field.split(';'))
            else:
                flattened_fields.append(field)
        # 把扁平化后的列表转为逗号分隔的字符串(想要带空格就把','改成', ')
        output.append(','.join(flattened_fields))
    
    # 打印结果(如果有多行的话会逐行输出)
    print('\n'.join(output))

代码解释

  1. 正确读取CSV:去掉了错误的quoting和escapechar参数,csv模块默认会识别双引号作为字段的包裹标记,这样引号内的;会被当作字段内容,读取后每一行会得到 ['1', '2;3', '4;5', '6'] 这样的列表(双引号会被自动移除)。
  2. 拆分字段内的分号:遍历每个字段,检查是否包含;,如果有就拆分并把拆分后的元素加入新列表,否则直接添加原字段。
  3. 生成目标格式:用','.join()把所有元素拼接成逗号分隔的字符串,要是你想要示例里带空格的格式,把代码里的','改成', '就行。

测试你的示例行,这段代码会输出 1,2,3,4,5,6(或带空格的版本),完全符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 19:07:34