You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python从布尔逻辑表达式中提取变量(附示例)

没问题,这里有一个靠谱的Python方案,能从布尔逻辑表达式里提取变量,完全适配你给出的示例需求:

实现代码
import re

def extract_boolean_variables(expression):
    # 布尔逻辑里的关键字,需要排除在外
    boolean_keywords = {'or', 'and', 'not'}
    # 匹配所有由字母组成的标识符(支持单字母或多字母变量)
    all_tokens = re.findall(r'\b[A-Za-z]+\b', expression)
    # 过滤关键字并去重,同时保留变量首次出现的顺序
    unique_variables = []
    seen_vars = set()
    for token in all_tokens:
        if token not in boolean_keywords and token not in seen_vars:
            seen_vars.add(token)
            unique_variables.append(token)
    return unique_variables
测试示例
# 测试你提供的输入表达式
test_expression = "E= A or B or (C and not D)"
print(extract_boolean_variables(test_expression))
# 输出结果: ['E', 'A', 'B', 'C', 'D']
方案说明
  • 正则匹配逻辑:用\b[A-Za-z]+\b匹配所有连续的字母序列,这个规则不仅能处理示例里的单个大写字母变量,也支持像UserVar这类多字母的变量名。
  • 关键字过滤:专门定义了布尔逻辑的核心关键字集合,确保不会把or、and、not这类操作符误识别成变量。
  • 去重与顺序保留:通过一个集合seen_vars记录已经加入列表的变量,避免重复;同时按变量在表达式中首次出现的顺序收集结果,和你期望的输出顺序一致。
扩展适配

如果你的变量命名规则更灵活(比如包含数字、下划线),可以把正则表达式改成\b[A-Za-z0-9_]+\b,这样就能匹配像Var_123这类符合常规标识符规则的变量了。

内容的提问来源于stack exchange,提问作者이춘경

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:36:03