使用pandas.read_csv读取TSV文件时编码问题致行读取错误
解决pandas读取TSV时\r\n未被识别为换行符的问题
方法1:直接指定换行符参数
在pandas.read_csv()中显式设置lineterminator='\r\n',强制让pandas将\r\n识别为换行标记,无需额外替换字符串:
import pandas as pd df = pd.read_csv("file_name.tsv", sep="\t", lineterminator="\r\n")
方法2:预处理文件统一换行符
如果方法1无效,大概率是文件中存在混合换行符(比如同时有\n和\r\n),可以先手动预处理文件内容:
import pandas as pd # 读取原始文件并统一换行符 with open("file_name.tsv", "r", encoding="utf-8") as f: content = f.read().replace("\r\n", "\n") # 写入临时文件(也可直接用StringIO做内存操作,避免生成物理文件) with open("processed_file.tsv", "w", encoding="utf-8") as f: f.write(content) # 读取处理后的文件 df = pd.read_csv("processed_file.tsv", sep="\t")
如果需要更灵活处理所有类型的换行符,可用正则表达式统一替换:
import re content = re.sub(r'\r\n|\r|\n', '\n', content)
方法3:处理字段内的换行干扰
如果长条目本身包含未转义的\r\n(比如字段内容里的换行),会导致pandas误判行边界,此时可以指定quoting参数强制识别带引号的字段:
import pandas as pd import csv df = pd.read_csv("file_name.tsv", sep="\t", lineterminator="\r\n", quoting=csv.QUOTE_ALL)
内容的提问来源于stack exchange,提问作者lm231
相关产品推荐
相关产品推荐

