Python 正则表达式匹配或标记化

标签 python regex tokenize

我有一个数据结构转储,我正在尝试将其转换为 XML。该结构内部有许多嵌套结构。所以我有点不知道如何开始,因为我能想到的所有正则表达式都不适用于嵌套表达式。

例如,假设有一个像这样的结构转储:

abc = (  
        bcd = (efg = 0, ghr = 5, lmn = 10), 
        ghd = 5, 
        zde = (dfs = 10, fge =20, dfg = (sdf = 3, ert = 5), juh = 0))

我想得到这样的输出:

< abc >
  < bcd >   
    < efg >0< /efg >  
    < ghr >5< /ghr >  
    < lmn >10< /lmn >  
  < /bcd >  
.....  
< /abc > 

那么什么是一个好的方法呢?标记表达式、聪明的正则表达式还是使用堆栈?

最佳答案

使用pyparsing。

$ cat parsing.py 
from pyparsing import nestedExpr

abc = """(  
        bcd = (efg = 0, ghr = 5, lmn 10), 
        ghd = 5, 
        zde = (dfs = 10, fge =20, dfg = (sdf = 3, ert = 5), juh = 0))"""
print nestedExpr().parseString(abc).asList()

$ python parsing.py
[['bcd', '=', ['efg', '=', '0,', 'ghr', '=', '5,', 'lmn', '10'], ',', 'ghd', '=', '5,', 'zde', '=', ['dfs', '=', '10,', 'fge', '=20,', 'dfg', '=', ['sdf', '=', '3,', 'ert', '=', '5'], ',', 'juh', '=', '0']]]

关于Python 正则表达式匹配或标记化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11143243/

相关文章:

python - 理解(并查找)matplotlib 源代码

ruby - Ruby正则表达式中\A\z和^$的区别

php - 如何在 PHP 中使用 RegexIterator

python - spacy 标记化合并了错误的标记

python - Visual Studio 代码终端

python - 基于另一列过滤 pandas 数据框

python - 偶尔为变量赋值(占位符与 feed_dict)

php - 使用 php 和 javascript 匹配字符串中最后一个整数的正则表达式

一次性进行 R POS 标记和标记化

c - Flex 默认规则