如何使用Pandas通过特殊标记逐节阅读Txt文件?

时间:2017-08-14 16:41:40

标签: python pandas parsing text

我正在尝试使用Pandas来分析s结构分析软件的文本文件输出。 该文件有24000多行,可以分为几个部分,每个部分以$开头,例如:

$ STORIES - IN SEQUENCE FROM TOP
  STORY "PLATFORM"  HEIGHT 51.9996 
  STORY "BULKHEAD"  HEIGHT 117 
  STORY "EMR"  HEIGHT 124.9992 
  STORY "Roof"  HEIGHT 140.0004 SIMILARTO "41st FL"  

$ GRIDS
  GRIDSYSTEM "G1"  TYPE "CARTESIAN"  BUBBLESIZE 60 
  GRID "G1"  LABEL "g"  DIR "X"  COORD -1068 VISIBLE "Yes"  BUBBLELOC "End"  
  GRID "G1"  LABEL "d"  DIR "X"  COORD -586 VISIBLE "Yes"  BUBBLELOC "End"  
  GRID "G1"  LABEL "d.3"  DIR "X"  COORD -460 VISIBLE "Yes"  BUBBLELOC "End" 

我可以使用pd.read_csv并为每个参数指定skip_row参数,但是当文本文件很大时,这是非常重复和愚蠢的。 由于输出文件的格式非常好,有没有办法按$ ...的标题将文本文件解析为部分,并为$ ...以下的行创建pd.dataframe?

我猜这可能有用,但我必须指定txts的数量:

marker = '$'
txt1, txt2, txt3, txt4 = txt.split(marker)

另外,我可以指定正则表达式标记吗?

1 个答案:

答案 0 :(得分:2)

您可以使用split函数创建节(并且您不必指定txts的数量)。 split函数返回一个列表对象。列表中的每个元素都代表一个部分。

sections = txt.split("$")

现在您可以遍历列表。

for actual_section in sections:
    print actual_section

有关更多信息,请阅读有关拆分功能here的文档。