如何去除读取CSV文件时值中的双引号?
解决CSV字段双引号去除问题
你的CSV内容:
Mp4,Mp3,"1234554"
当前代码通过正则分割后,第三个字段保留了包裹的双引号。可以通过以下两种方式解决:
方法一:直接去除字段首尾的双引号
在打印前对每个记录做处理,用strip(b'"')去掉字节串首尾的双引号:
import re # 假设csv是你的字节列表 csv = [b'Mp4,Mp3,"1234554"'] csv = b''.join(csv).split(b'\n') for index, row in enumerate(csv): if not row: # 跳过空行 continue row = re.split(b''',(?=(?:[^'"]|'[^']*'|"[^"]*")*$)''', row) for records in row: # 去除首尾的双引号 cleaned_record = records.strip(b'"') print(cleaned_record)
方法二:使用Python内置csv模块(更推荐)
手动用正则处理CSV容易踩坑(比如字段包含换行、转义引号等场景),Python内置的csv模块可以自动处理带引号的字段,无需手动写正则:
import csv from io import BytesIO # 假设csv是你的字节列表 csv_data = b'Mp4,Mp3,"1234554"' # 用BytesIO模拟文件对象 with BytesIO(csv_data) as f: reader = csv.reader(f.read().decode('utf-8').splitlines()) for row in reader: for record in row: print(record)
如果处理的是字节流,也可以直接按文本模式处理,csv模块会自动解析掉字段的包裹引号。
内容的提问来源于stack exchange,提问作者Stay cool
相关产品推荐
相关产品推荐

