【问题标题】:Why can't I match True / False value in an IF statement? [duplicate]为什么我不能在 IF 语句中匹配 True / False 值? [复制]
【发布时间】:2018-12-24 09:27:03
【问题描述】:

如果 IF 语句允许,我正在尝试将 re.search 的输出与列表进行匹配并运行代码。但是,即使我告诉 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。

【问题讨论】:

  • 尝试在== True之前的整个表达式周围加上括号
  • 你只需要if re.search(r'...$', 'abcde1234doc').group() in ['doc', 'rtf', 'txt']:
  • 只需删除== True
  • @Austin 哦,太好了!我将在我的代码中使用它
  • @MrU,没错。由于正则表达式搜索返回一个真实值,因此可以处理这种情况。

标签: python regex python-2.7 list if-statement


【解决方案1】:

Python 中的布尔运算符链。

x in y == z

意思

x in y and y==z

你可以把你的条件写成

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

如果你愿意,但最好不要使用 ==True 并坚持使用

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

【讨论】:

    猜你喜欢
    • 2013-11-10
    • 2015-05-06
    • 1970-01-01
    • 1970-01-01
    • 2020-04-25
    • 1970-01-01
    • 2013-06-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多