Python 为什么可以';我是否匹配IF语句中的真/假值?

Python 为什么可以';我是否匹配IF语句中的真/假值?,python,regex,python-2.7,list,if-statement,Python,Regex,Python 2.7,List,If Statement,我试图将搜索的输出与列表匹配,如果if语句允许,则运行代码。然而,即使我告诉if语句匹配True或False,if语句也永远不会继续 在python中运行搜索: >>> re.search(r'...$', 'abcde1234doc').group() in ['doc', 'rtf', 'txt'] >>> True 返回True,因此通过请求IF语句匹配True,它应该继续执行其代码。但这似乎不起作用 if re.search(r'...$', 'ab

我试图将搜索的输出与列表匹配,如果if语句允许,则运行代码。然而,即使我告诉if语句匹配True或False,if语句也永远不会继续

在python中运行搜索:

>>> re.search(r'...$', 'abcde1234doc').group() in ['doc', 'rtf', 'txt']
>>> True
返回True,因此通过请求IF语句匹配True,它应该继续执行其代码。但这似乎不起作用

if re.search(r'...$', 'abcde1234doc').group() in ['doc', 'rtf', 'txt'] == True:
    print'regex search matched!'
else:
    print'regex search not matched'

当正则表达式搜索返回True时,我希望IF语句继续执行其代码,但是IF语句不匹配,直接转到ELSE。

Python中的布尔运算符链

x in y == z
意味着

你可以把你的情况写成

if (re.search(r'...$', 'abcde1234doc').group() in ['doc', 'rtf', 'txt']) == True:
如果您愿意,但最好不要使用
==True
,而是坚持使用

if re.search(r'...$', 'abcde1234doc').group() in ['doc', 'rtf', 'txt']:

==True
之前,尝试在整个表达式周围加上括号。如果在['doc'、'rtf'、'abcde1234doc').group()中重新搜索('r'、'abcde1234doc'):。只需删除
==True
@Austin哦,这太好了!我会在我的生活中使用这个code@MrU确切地由于正则表达式搜索返回一个truthy值,因此这将处理该情况。
if re.search(r'...$', 'abcde1234doc').group() in ['doc', 'rtf', 'txt']: