python-3.x - Python:读取具有可变布局的文本文件,如果存在则根据列名访问行
问题描述
我有一个布局多样的文本文件。我希望能够阅读所有内容,但有它可以根据第一列名称查找一行(有时一行根本没有列名称,如下所示)
Data1 (in) 13.625
Data2 (in) 2.875
Data3 (in) 5.750
Data4 (in) 18.500
Data5 (lbm) 724.042
Data6 (in) 2.875
Data7 (in) 0.000
Start End
--------------------------------------------------------------------------------
Data8 (in^3) 98.424 92.119
Data9 (in^3) 0.000 0.000
INFORMATION
-----------------
Start End
S D S D
------------------------------------------------------------
Data10 2 2 2 2
Data11(in) 6.755 6.730 6.755 6.730
Data12 String1 String2 String3 String4
Data13 39 39 39 39
Data14(in) 0.118 0.118 0.118 0.118
Data15(in^2) 9.793 9.793 9.793 9.793
CONDITIONS
--------------------------------------------------------------------------------
R P(psi) T(F) EP(psi)
--------------------------------------------------------------------------------
890.000 192.661 107.996 517.661
--------------------------------------------------------------------------------
我尝试过的事情:
- 简单的for循环
output = {}
for linenum, line in enumerate(results):
if line.startswith("data1 (in)"):
column = line.split(")")
f= line.split(")")[1].split()
output["f"] = round(float(f[0]), 3)
- numpy.genfromtxt() 仅给出整行的字符串表示
table = np.genfromtxt(outfile, invalid_raise=False, missing_values = "", filling_values=np.nan,names=True, delimiter='\s+', dtype=None)
- pandas read_table 将整行作为第一列
data = pd.read_table(outfile, sep="/\s\s+/g", skiprows=6, header=None, engine="python")
print(data[0][18])
除了 for 循环之外,还有没有更简单的方法可以做到这一点,因为 if 语句可能会失控
解决方案
推荐阅读
- excel - VBA Copying a Pasting to Sharepoint
- cordova - Ionic Android - 你如何重命名构建的输出文件?
- git - 在进行 git rebase 时,为什么 git 需要一个完全干净的工作目录,包括不受 rebase 影响的文件?
- html - thymeleaf 在源代码中呈现附加标签
- visual-studio - 使用 Visual Studio Web 项目进行变更集管理
- python-3.x - 接收文件名中带有时间戳的文件的适当方法是什么?
- mysql - 错误 ModuleNotFoundError:没有名为“pymysql”的模块
- android - 使用动态数据解析非常大的 JSON 文件
- python - 根据字典值打印单数/复数
- powershell - Powershell Invoke-Command 未使用 Get-Clipboard 抓取剪贴板数据