如何从txt文件中提取KE_None与CPS_None列数值并排除无关内容
解决方案
以下是两种可直接运行的实现方案,均可自动跳过无效头部内容、精准提取目标两列数据:
方法1:Python内置方法实现(无额外依赖)
file_path = r"C:\Temp\stick\zNsNo-MAGNETRON\MAG-ZnSnO-1-XPS.vms" ke_list = [] cps_list = [] with open(file_path, 'r', encoding='utf-8') as f: # 跳过前2行无效元数据 for _ in range(2): next(f) # 读取表头行定位目标列位置 headers = f.readline().split() ke_idx = headers.index("KE_None") cps_idx = headers.index("CPS_None") # 逐行提取数值 for line in f: line = line.strip() if not line: continue parts = line.split() ke_list.append(float(parts[ke_idx])) cps_list.append(float(parts[cps_idx])) # 直接绘制曲线 import matplotlib.pyplot as plt plt.plot(ke_list, cps_list) plt.xlabel("KE_None (eV)") plt.ylabel("CPS_None") plt.show()
方法2:Pandas实现(更简洁,适合批量数据处理)
import pandas as pd import matplotlib.pyplot as plt file_path = r"C:\Temp\stick\zNsNo-MAGNETRON\MAG-ZnSnO-1-XPS.vms" # 自动跳过前2行,仅读取目标列 df = pd.read_csv(file_path, skiprows=2, sep='\s+', usecols=["KE_None", "CPS_None"]) ke_list = df["KE_None"].tolist() cps_list = df["CPS_None"].tolist() # 绘制曲线 plt.plot(ke_list, cps_list) plt.xlabel("KE_None (eV)") plt.ylabel("CPS_None") plt.show()
两种方案均通过列名匹配定位目标字段,无需硬编码列索引,就算后续文件列顺序调整也能正常使用。
内容的提问来源于stack exchange,提问作者Adam Jackson
相关产品推荐
相关产品推荐

