如何用Python/Pandas读取含换行符的制表符分隔文件?
解决带引号内换行的制表符文件读取问题
Pandas 解决方案
你的pd.read_csv代码未正确识别引号内的换行属于同一字段,补充参数即可修复:
import pandas as pd import csv df = pd.read_csv( "C:/dummy/dummy.csv", sep='\t', quotechar='"', quoting=csv.QUOTE_ALL, # 指定引号包裹的内容为完整字段 engine='python' # Python引擎对特殊格式兼容性更好 )
执行后df会正确生成2行数据,address字段内的换行将被保留为字段内容的一部分。
原生Python 解决方案
如果用原生Python读取,需要手动判断行是否处于引号包裹状态,拼接被换行拆分的字段:
file_path = 'C:/dummy/dummy.csv' processed_lines = [] current_entry = '' in_quote = False with open(file_path, 'r', encoding='utf-8') as f: for raw_line in f: line = raw_line.rstrip('\n') # 移除末尾换行符,保留其他空白 # 通过引号数量判断是否切换包裹状态 quote_num = line.count('"') if quote_num % 2 != 0: in_quote = not in_quote if in_quote: # 引号未闭合,拼接当前行(用空格替换换行,避免影响后续字段分割) current_entry += line + ' ' else: # 引号闭合,完成当前条目 current_entry += line processed_lines.append(current_entry) current_entry = '' # 输出处理后的完整行 for line in processed_lines: print(line)
这段代码会把引号内的多行内容合并为一个完整字段,最终得到2条完整数据。
内容的提问来源于stack exchange,提问作者mial4567
相关产品推荐
相关产品推荐

