在文本文件中查找表并打印它

时间:2014-07-29 08:21:27

标签: python

我有包含以下数据的文本文件:

 EMethod_sel="ID"
 Sel_Ele_Search_Pattern="*D=30*" Sel_Ele_Label_Toggle=OFF
 Eid=SHOW_OK
 All 171665 elements are suitable
 ShowFE/XROT
 ECHConnect
 ShowFE/ZROT
 ShowFE/YROT
 Asca
 ShowFE/YROT
 Asca
 ShowFE/XROT
 EMSameNorm/ALL
 ShowFE/ZROT
 ECHPenetra ShellThick=Shell-Thickness, ScaleFac=0.9, SetID=9999
 * 20 coincident elements
 ECHCoincid
 Summary
 * O B J E C T   ( FE )           Total    Min-ID    Max-ID Show/Defi
 * ------------------------------------------------------------------
 * Nodes                         225965         1    226932    225785
 * Elements                      171665         1    198299    171665
 * Materials                          2       100       101         2
 * Properties                        46         1   1000009        46
 * Element Sets                      83         1     10000
 * ------------------------------------------------------------------
 * O B J E C T   ( PART )         Total    Min-LV    Max-LV
 * ------------------------------------------------------------------
 * Parts                              1         0         0
 * ------------------------------------------------------------------
 * O B J E C T   ( GEO )          Total   Minimum   Maximum      Show
 * ------------------------------------------------------------------
 * No GEO - Objects found
 * ------------------------------------------------------------------
 Asca
 ShowFE/XROT
 ShowFE/YROT
 EMSameNorm/
 ShowFE/ZROT
 Inertia EGeo_dist_sel=0.1 ETilt_angle_sel=30 EProperty_limits_sel=ON
 ELayer_limits_sel=ON ESame_face_IDs_only_sel=OFF
 Eid=SHOW

我需要找到它是否有任何表格,如果它在那里它应该打印它,表格长度可能会有所不同。那我们怎么做呢? 是否有任何模块可以执行此任务?

1 个答案:

答案 0 :(得分:0)

修改:由于行SummaryAsca标记了表的开头和结尾,因此可以使用以下代码。

with open("in.txt") as input:
    intable = False
    for line in input:
        if line.strip() == "Summary":
            intable = True
        if line.strip() == "Asca":
            intable = False
        if intable and line.strip().startswith("*"):
            print(line.strip())

输出:

* O B J E C T   ( FE )           Total    Min-ID    Max-ID Show/Defi
* ------------------------------------------------------------------
* Nodes                         225965         1    226932    225785
* Elements                      171665         1    198299    171665
* Materials                          2       100       101         2
* Properties                        46         1   1000009        46
* Element Sets                      83         1     10000
* ------------------------------------------------------------------
* O B J E C T   ( PART )         Total    Min-LV    Max-LV
* ------------------------------------------------------------------
* Parts                              1         0         0
* ------------------------------------------------------------------
* O B J E C T   ( GEO )          Total   Minimum   Maximum      Show
* ------------------------------------------------------------------
* No GEO - Objects found
* ------------------------------------------------------------------