我目前正在使用pyparsing来识别是否在字符串中使用了嵌套括号,以便识别错误地连接到单词的引用号。
例如,'apple(4)'。
我希望能够识别引用子语句('(4)')。但是,当我使用searchString时,它返回[[7]]的ParseResults对象,该对象不提供括号。我想在原始令牌中找到子字符串,因此我需要在ParseResults对象中包含嵌套字符。即,我想搜索'(4)'。有没有办法让searchString返回嵌套字符。
答案 0 :(得分:1)
问题:有没有办法让searchString返回嵌套字符。
请考虑以下示例:
data = 'apple(4), banana(13), juice(1)'
from pyparsing import Word, nums, alphas
nested = Word(alphas) + '(' + Word(nums) + ')'
for item in data.split((',')):
print(item, "->", nested.searchString(item))
<强>输出强>:
apple(4), ->[['apple', '(', '4', ')']] banana(13), ->[['banana', '(', '13', ')']] juice(1), ->[['juice', '(', '1', ')']]
import re
nObj = re.compile('(\w+?)(\(\d+\))')
findall = nObj.findall(data)
print('findall:{}'.format(findall))
输出:
findall:[('apple', '(4)'), ('banana', '(13)'), ('juice', '(1)')]
使用Python测试:3.4.2