【问题标题】:Python: Convert String containing Multiple True / False / Parenthesis into a BooleanPython:将包含多个真/假/括号的字符串转换为布尔值
【发布时间】:2018-02-04 17:10:47
【问题描述】:

我想知道如何在 Python 中转换如下字符串:

  • “(真假)|真”
  • "((假|假)&(真|假))&(假|真)"

布尔答案:

  • 是的
  • 错误

bool() 函数似乎不起作用。

谢谢,

【问题讨论】:

    标签: python string type-conversion boolean


    【解决方案1】:

    您可以简单地 eval 这些表达式,因为它们是有效的 Python

    >>> eval("(True & False) | True")
    True
    >>> eval("((False | False) & (True | False)) & (False | True)")
    False
    

    【讨论】:

    • 谨慎使用 eval。它在有效性之前评估表达式,应谨慎使用:stackoverflow.com/questions/15197673/…
    • 感谢@CoryKramer 和@"Notice Me Senpai" 的帮助!
    • 如果您怀疑提供给eval 的字符串中可能包含不需要的字符,您可以使用以下代码:import re;s = "((False | False) & (True | False)) & (False | True)";if not re.sub(r'[\(\)\|&TrueFals ]*', '', s):eval(s)。这会删除除 True、False 等之外的所有内容。如果还有任何内容,则不会执行 eval
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-05
    • 2013-07-16
    • 2013-07-11
    • 2018-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多