处理3GB TXT转CSV时遭遇ParserError报错求助
解决ParserError: ' ' expected after '"'的方案
报错原因
这个错误源于TXT文件中存在不规范的双引号("对应实际的"),比如未闭合的引号、引号与分隔符冲突,加上3GB大文件的解析压力,导致Pandas的CSV解析器报错。
具体解决方法
禁用引号解析,跳过格式错误行
直接关闭引号解析逻辑,避免因不规范引号触发报错,同时保留on_bad_lines='skip'跳过其他格式问题行。注意Windows路径要转义反斜杠或用原始字符串:import pandas as pd import csv # 用双反斜杠转义路径,或者用r"path\logs.txt"原始字符串 df1 = pd.read_csv("path\\logs.txt", delimiter="\t", encoding='cp437', engine="python", quoting=csv.QUOTE_NONE, on_bad_lines='skip') df1.to_csv("C:\\Data\\log1.csv", quotechar='"', header=None, index=False)分批处理大文件,避免内存溢出
3GB文件直接读入内存容易撑爆,用chunksize分批读取并写入CSV:import pandas as pd import csv output_path = "C:\\Data\\log1.csv" # 初始化输出文件(无表头则跳过写入表头步骤) with open(output_path, 'w', encoding='utf-8', newline='') as f: writer = csv.writer(f, quotechar='"') # writer.writerow(["列名1", "列名2"]) # 按需添加表头 # 每次读取10万行,可根据内存调整大小 for chunk in pd.read_csv("path\\logs.txt", delimiter="\t", encoding='cp437', engine="python", quoting=csv.QUOTE_NONE, chunksize=100000, on_bad_lines='skip'): chunk.to_csv(output_path, mode='a', header=False, quotechar='"', index=False)预处理文件修复不规范引号
如果文件中引号确实存在格式问题,先逐行清理后再解析:# 清理原始TXT文件中的引号 with open("path\\logs.txt", 'r', encoding='cp437') as infile, \ open("path\\cleaned_logs.txt", 'w', encoding='cp437') as outfile: for line in infile: # 替换所有双引号,或根据实际情况写更精准的清理逻辑 cleaned_line = line.replace('"', '') outfile.write(cleaned_line) # 用清理后的文件转CSV df1 = pd.read_csv("path\\cleaned_logs.txt", delimiter="\t", encoding='cp437', engine="python", on_bad_lines='skip') df1.to_csv("C:\\Data\\log1.csv", quotechar='"', header=None, index=False)检查路径转义问题
代码中路径的反斜杠需转义为\\,或使用原始字符串(前缀r),否则\t会被解析为制表符,导致文件路径错误:# 正确写法二选一 pd.read_csv(r"path\logs.txt", ...) pd.read_csv("path\\logs.txt", ...)
内容的提问来源于stack exchange,提问作者Prashant Sharma
相关产品推荐
相关产品推荐

