如何移除CSV字段内的换行符?(保留行尾换行)
处理CSV字段内换行符的Python方案
遇到CSV字段内部包含换行符导致Pandas解析异常的问题,核心是只替换字段内的换行符,保留每行末尾的换行,下面提供两种实用方法:
方法一:预处理CSV文件(适合大文件)
先手动处理文件,把引号包裹的多行字段合并成单行,用空格替换内部换行:
input_path = "原文件.csv" output_path = "清理后文件.csv" with open(input_path, 'r', encoding='utf-8') as infile, open(output_path, 'w', encoding='utf-8') as outfile: inside_quote = False for line in infile: # 切换引号包裹状态(奇数个引号表示进入/退出字段) inside_quote = inside_quote ^ (line.count('"') % 2 == 1) if inside_quote: # 引号内的行去掉换行,换成空格拼接 outfile.write(line.rstrip('\n') + ' ') else: # 非引号内的行(行尾)直接写入,保留原换行 outfile.write(line) # 读取处理后的文件到DataFrame df = pd.read_csv(output_path)
方法二:Pandas直接读取后处理(简洁高效)
利用Pandas的CSV读取参数识别引号字段,读取后统一替换内部换行:
import pandas as pd # 读取时指定引号规则,自动识别字段内的换行 df = pd.read_csv("原文件.csv", quotechar='"', quoting=pd.QUOTE_ALL) # 把所有字段内的换行符替换为空格 df = df.replace(r'\n', ' ', regex=True) # 保存清理后的CSV,自动保留行尾换行 df.to_csv("清理后文件.csv", index=False)
注意:如果你的CSV使用其他引号字符(如单引号),只需修改
quotechar参数对应的值即可。
内容的提问来源于stack exchange,提问作者Cas Criel
相关产品推荐
相关产品推荐

