簡體   English   中英

Python解析樹狀數據

[英]Python parsing tree-like data

我有一個看起來像這樣的字體的字形信息:

(CHARACTER C T
   (CHARWD R 0.6944475)
   (CHARHT R 0.686111)
   (COMMENT
      (KRN C y R -0.027779)
      (KRN C e R -0.083334)
      (KRN C o R -0.083334)
      (KRN C r R -0.083334)
      (KRN C a R -0.083334)
      (KRN C A R -0.083334)
      (KRN C u R -0.083334)
      )
   )

有沒有一種簡單的方法可以在python中解析呢? 我以前使用過BeautifulSoup,但是它需要嵌套<tag> </tag>類的信息。 將其轉換為XML並再次返回並不難-但這似乎是在重新發明輪子。 我如何將這些信息放入可以操縱並再次吐出的數據對象中?

您可以使用pyparsing 您的示例非常類似於s-expression ,並且在示例部分中具有s-expression解析器: http : //pyparsing.wikispaces.com/file/view/sexpParser.py

這會將您的數據轉換為python數據結構。 不知道這是您要找的東西嗎?

s = """(CHARACTER C T
       (CHARWD R 0.6944475)
       (CHARHT R 0.686111)
           (COMMENT
           (KRN C y R -0.027779)
           (KRN C e R -0.083334)
           (KRN C o R -0.083334)
           (KRN C r R -0.083334)
           (KRN C a R -0.083334)
           (KRN C A R -0.083334)
           (KRN C u R -0.083334)
           )
        )"""

s = re.sub("\)", "\),", s)
t = re.sub('([(,\s])(\w+)', '\\1"\\2",', s)
eval(t[:-1].replace('\\', ''))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM