我正在尝试将'if (x==5) {'
之类的字符串拆分为:
['if', '(', 'x', '==', '5', ')', '{']
我有一个我创建的关键字列表作为我的分隔符。我遇到的另一个问题是分隔符的顺序。在分割到'=='
'='
上分开
我想拆分多个分隔符,但将分隔符保留为单独的元素。
答案 0 :(得分:0)
使用re.split
。
>>> x = 'if (x==5) {'
>>> [i for i in re.split(r'(==)|(\d+)|([(){]|[a-z]+)|\s+', x) if i and i != None ]
['if', '(', 'x', '==', '5', ')', '{']
捕获小组将保持分隔符。
答案 1 :(得分:0)
假设您有一个分隔符列表,如
seps= ('(',')','{','}','==','=')
你可以试试这个:
import re
pattern= r'\s*(%s)\s*'%('|'.join((re.escape(sep) for sep in seps)))
print [token for token in re.split(pattern, 'if (x==5) {') if token]
将分隔符放入捕获组(即(==|=|...)
)会导致re.split
不丢弃它们。
答案 2 :(得分:0)
正如评论中提到的@dylrei所说,这是一种乐观。 lexing工具http://www.dabeaz.com/ply/能够回答我的问题。
谢谢!