在 python 中使用正则表达式从字符串表达式中提取变量名称
Extract variable names from the string expression using regex in python
我在字符串中有一个代数表达式。我想从表达式中提取变量名。变量名称应遵循 python 变量命名规则。 (应该是字母或数字的组合,不能以数字开头,可以有下划线等)[=13=]
示例:
formula = 'value1 * 5 + value_2 /4'
它应该给出 ['value1', 'value_2']
的结果
而不是正则表达式 - 如果可能的话 - 我会使用 ast
模块来解析 Python 的代码本身。这意味着你不必担心字符串 literals/other 的东西,如果解析失败,你会得到一个错误,这意味着它是一个不完整或无效的语句:
import ast
formula = 'value1 * 5 + value_2 /4'
names = [
node.id for node in ast.walk(ast.parse(formula))
if isinstance(node, ast.Name)
]
# ['value1', 'value_2']
我在字符串中有一个代数表达式。我想从表达式中提取变量名。变量名称应遵循 python 变量命名规则。 (应该是字母或数字的组合,不能以数字开头,可以有下划线等)[=13=]
示例:
formula = 'value1 * 5 + value_2 /4'
它应该给出 ['value1', 'value_2']
而不是正则表达式 - 如果可能的话 - 我会使用 ast
模块来解析 Python 的代码本身。这意味着你不必担心字符串 literals/other 的东西,如果解析失败,你会得到一个错误,这意味着它是一个不完整或无效的语句:
import ast
formula = 'value1 * 5 + value_2 /4'
names = [
node.id for node in ast.walk(ast.parse(formula))
if isinstance(node, ast.Name)
]
# ['value1', 'value_2']