首页 > 解决方案 > 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
--------------------------------------------------------------------------------

我尝试过的事情:

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)
table = np.genfromtxt(outfile, invalid_raise=False, missing_values = "", filling_values=np.nan,names=True, delimiter='\s+', dtype=None)
        data = pd.read_table(outfile, sep="/\s\s+/g", skiprows=6, header=None, engine="python")
        print(data[0][18])

除了 for 循环之外,还有没有更简单的方法可以做到这一点,因为 if 语句可能会失控

标签: python-3.xpandasnumpytxtgenfromtxt

解决方案


推荐阅读