当我在包含两个或更多组的 Python 2.x 中使用正则表达式时,re.findall()
会返回正则表达式包含的n个组的n元组列表。我知道它应该像这样工作,但有没有办法规避这种行为?
例如,当我跑
时import re
sentence = 'We also learned that the !!probability of an outcome is its relative frequency over endless repetitions of the experiment. '
print re.findall(r'[Pp]robabilit(y|ies)',sentence)
它只返回['y']
。但是,我希望probability
返回。对于包含“概率”的其他句子,我希望返回probabilities
,依此类推。
答案 0 :(得分:4)
当存在一个或多个组时,re.findall
的行为会发生变化。它返回一个组列表;如果有多个组,则为元组列表。
您可以通过将群组设为非捕获群来获得所需内容:
>>> re.findall(r'[Pp]robabilit(?:y|ies)',sentence)
['probability']
或者使用re.finditer
和列表理解:
>>> [m.group() for m in re.finditer(r'[Pp]robabilit(y|ies)',sentence)]
['probability']