如何解决Pandas加载CSV文件时的引号错误问题
解决Pandas读取含未转义双引号的CSV问题
你的CSV数据问题出在字段内的双引号未按CSV规范转义:CSV标准要求字段内的双引号必须用两个连续双引号("")表示,但你的数据里存在单个双引号直接出现在字段内部(比如第4行的"PANELBOARDS"),导致Pandas解析时提前闭合字段,引发错误。不需要手动修复,以下是可行的自动处理方案:
方法一:预处理CSV文件(推荐)
用正则表达式批量修复所有行的未转义双引号,再用Pandas读取:
import re import pandas as pd # 读取原始CSV内容 with open('your_data.csv', 'r', encoding='utf-8') as f: content = f.read() # 正则替换:匹配字段内部的单个双引号,替换为符合规范的双引号对 fixed_content = re.sub(r'(?<="[^"])"(?=[^"]")', r'""', content) # 写入修复后的文件 with open('fixed_data.csv', 'w', encoding='utf-8') as f: f.write(fixed_content) # 正常读取修复后的CSV df = pd.read_csv('fixed_data.csv', quotechar='"', doublequote=True) print(df)
方法二:实时处理错误行(无需中间文件)
结合Python内置csv模块捕获解析错误,实时修复后转为DataFrame:
import csv import re import pandas as pd rows = [] with open('your_data.csv', 'r', encoding='utf-8') as f: line_num = 0 for line in f: line_num += 1 try: # 尝试解析当前行 row = next(csv.reader([line], quotechar='"', doublequote=True)) rows.append(row) except csv.Error: # 解析失败时自动修复该行的双引号 fixed_line = re.sub(r'(?<="[^"])"(?=[^"]")', r'""', line.strip()) fixed_row = next(csv.reader([fixed_line], quotechar='"', doublequote=True)) rows.append(fixed_row) print(f"已自动修复第{line_num}行") # 转为DataFrame(若有表头,可将rows[0]设为列名) df = pd.DataFrame(rows) print(df)
关键说明
doublequote=True是Pandas和csv模块的默认参数,会将字段内的""自动解析为单个",保证单元格内容还原正确。- 正则表达式
(?<="[^"])"(?=[^"]")精准匹配字段内部的单个双引号,不会误改字段首尾的包裹双引号。
内容的提问来源于stack exchange,提问作者Luis Gutiérrez
相关产品推荐
相关产品推荐

