gpt4 book ai didi

python - 禁用 Python 的 re.findall() 的 "group becomes tuple"行为

转载 作者:行者123 更新时间:2023-11-28 21:53:15 24 4
gpt4 key购买 nike

当我在 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,等等。

最佳答案

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']

关于python - 禁用 Python 的 re.findall() 的 "group becomes tuple"行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26945811/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com