Pyparsing Nested Expression:在ParseResults中返回Nest字符

时间:2017-06-14 19:35:47

标签: python pyparsing

我目前正在使用pyparsing来识别是否在字符串中使用了嵌套括号,以便识别错误地连接到单词的引用号。

例如,'apple(4)'。

我希望能够识别引用子语句('(4)')。但是,当我使用searchString时,它返回[[7]]的ParseResults对象,该对象不提供括号。我想在原始令牌中找到子字符串,因此我需要在ParseResults对象中包含嵌套字符。即,我想搜索'(4)'。有没有办法让searchString返回嵌套字符。

1 个答案:

答案 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