Python/Pandas读取含负数文本文件时字段错位问题求解
解决方案
以下两种方案均适配你的场景,处理8.7万行数据无性能压力:
方案1:逐行正则匹配提取(稳定性最高)
直接通过正则匹配提取每行的4个科学计数法数值,完全忽略分隔符异常的影响:
import re import pandas as pd # 科学计数法格式匹配规则 pattern = r'[+-]?\d+\.\d+E[+-]?\d+' data_list = [] with open("你的源文件路径.txt", "r", encoding="utf-8") as f: for line in f: line = line.strip() if not line: continue # 提取当前行所有符合格式的数值 nums = re.findall(pattern, line) data_list.append([float(num) for num in nums]) # 生成标准DataFrame df = pd.DataFrame(data_list, columns=["X Coordinate", "Y Coordinate", "Parameter 1", "Parameter 2"])
方案2:预处理补全分隔符后直接导入
如果需要生成标准CSV文件方便后续复用,可以先给缺失空格的负号补全分隔符,再直接导入:
import re import pandas as pd from io import StringIO with open("你的源文件路径.txt", "r", encoding="utf-8") as f: raw_content = f.read() # 仅给科学计数法E之后之外的负号前补空格 processed = re.sub(r'(?<!E)(-)', r' \1', raw_content) # 直接读取处理后的内容生成DataFrame df = pd.read_csv( StringIO(processed), sep="\s+", names=["X Coordinate", "Y Coordinate", "Parameter 1", "Parameter 2"] ) # 可导出为标准CSV # df.to_csv("processed_data.csv", index=False)
内容的提问来源于stack exchange,提问作者Alpha
相关产品推荐
相关产品推荐

