[英]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.