使用Python修复含HTML内容且格式损坏的CSV文件
CSV文件格式修复方案
问题背景
CSV文件包含HTML代码,部分行中的HTML特殊字符(如逗号、引号)破坏了CSV格式,导致无法正常解析。
已尝试的代码
import csv with open('csv_problem.csv', 'r') as file: reader = csv.reader(file) for row in reader: print(row)
解决方法
方法1:使用Python标准csv模块修复
通过强制将所有字段用双引号包裹,确保HTML中的特殊字符被正确转义:
import csv # 读取损坏的CSV文件,指定编码避免乱码 with open('csv_problem.csv', 'r', encoding='utf-8') as in_file: # 按默认规则读取,若原文件有特定引号规则可调整quoting参数 reader = csv.reader(in_file) all_rows = list(reader) # 写入修复后的CSV,强制用双引号包裹所有字段 with open('fixed_csv.csv', 'w', newline='', encoding='utf-8') as out_file: writer = csv.writer(out_file, quoting=csv.QUOTE_ALL) writer.writerows(all_rows)
方法2:使用pandas处理复杂场景
如果标准csv模块解析异常,pandas提供更灵活的参数适配特殊格式:
import pandas as pd # 读取时配置参数识别字段边界 df = pd.read_csv( 'csv_problem.csv', sep=',', quotechar='"', quoting=pd.io.common.QUOTE_ALL, encoding='utf-8' ) # 写入时强制引用所有字段,避免格式破坏 df.to_csv('fixed_csv_pandas.csv', index=False, quoting=pd.io.common.QUOTE_ALL, encoding='utf-8')
核心原理
CSV格式损坏的本质是HTML代码中包含的逗号(分隔符)或引号未被转义,修复时通过统一用引号包裹字段,让解析器能正确区分字段内容与格式符号。
内容的提问来源于stack exchange,提问作者Van Jake
相关产品推荐
相关产品推荐

