如何正确拆分含单元格内逗号的CSV行字符串?
解决CSV字符串带引号内容的拆分问题
直接用split(',')会把引号内部的逗号也当作分隔符,导致拆分结果不符合预期。正确的做法是使用Python标准库中的csv模块,它专门用于处理CSV格式的解析,能自动识别引号包裹的内容,不会拆分其中的逗号。
代码示例
import csv import io tp = 'A,B,C,"6G,1A",1,2\r\n' # 将字符串转为类文件对象 csv_file = io.StringIO(tp) # 创建CSV读取器 reader = csv.reader(csv_file) # 获取单行数据 result = next(reader) print(result)
运行后输出:
['A', 'B', 'C', '6G,1A', '1', '2']
如果需要保留字符串中的引号(对应你期望结果里的"6G,1A",实际是转义后的双引号),可以调整CSV读取器参数关闭引号解析:
import csv import io tp = 'A,B,C,"6G,1A",1,2\r\n' csv_file = io.StringIO(tp) # 设置不解析引号 reader = csv.reader(csv_file, quoting=csv.QUOTE_NONE) result = next(reader) # 去除末尾的换行符 result[-1] = result[-1].rstrip('\r\n') print(result)
输出结果:
['A', 'B', 'C', '"6G,1A"', '1', '2']
为什么不推荐用正则?
虽然可以用正则表达式匹配"[^"]+"或[^,]+来拆分,但正则很难处理CSV中的边缘情况(比如引号内包含转义引号""、多行内容等),而csv模块是经过测试的标准工具,能覆盖绝大多数场景,更可靠。
内容的提问来源于stack exchange,提问作者agile
相关产品推荐
相关产品推荐

