#python-3.x #pandas #numpy #txt #genfromtxt
Вопрос:
У меня есть текстовый файл с различной компоновкой. Я хочу иметь возможность прочитать все это, но иметь его там, где я могу найти строку на основе имени первого столбца (иногда строка вообще не имеет имени столбца, как показано ниже).
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
--------------------------------------------------------------------------------
Вещи, которые я пробовал:
- просто для цикла
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="/ss /g", skiprows=6, header=None, engine="python")
print(data[0][18])
Есть ли более простой способ сделать это, кроме цикла for, как если бы операторы могли выйти из-под контроля