Python解析树like d

2024-10-01 02:23:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个字体的字形信息,如下所示:

(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中有没有一种直接的方法来解析它?我以前使用过beauthoulsoup,但它需要类似于<tag> </tag>的嵌套信息。将其转换为XML并再次转换回XML并不困难,但似乎这将是一次彻底的变革。如何将这些信息放入一个数据对象中,以便我可以操作并再次输出?在


Tags: 数据对象方法信息tagcomment字体xml
2条回答

这将把数据转换成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('\\', ''))

您可以使用pyparsing。您的示例看起来非常像s-expression,并且它们的examples section:http://pyparsing.wikispaces.com/file/view/sexpParser.py中有一个s表达式解析器

相关问题 更多 >