繁体   English   中英

从 Python 中的数学线性表达式中提取系数

[英]Extract coefficients from mathematical linear expression in Python

给定一个字符串,其中包含一些名称可能未知的变量中的线性表达式,我想返回一个字典,其中变量名称作为键,相应的系数作为值。

例子

输入:

s = "- x0 + 2 * x1 + 4 * x2 - 3 * y + z + 8"

输出:

{'x0': -1, 'x1': 2, 'x2': 4, 'y': -3, 'z': 1}

您可以使用像([+-])?\s*(?:(\d+)\s*\*\s*)?([az]\w*)这样的正则表达式。 这里,第一部分(系数,包括* )是可选的,但只有符号和实际数字会被记住,以及变量。 然后,您可以将它们转换为字典。

>>> import re
>>> s = "- x0 + 2 * x1 + 4 * x2 - 3 * y + z + 8"
>>> p = r"([+-])?\s*(?:(\d+)\s*\*\s*)?([a-z]\w*)"
>>> re.findall(p, s)
[('-', '', 'x0'),
 ('+', '2', 'x1'),
 ('+', '4', 'x2'),
 ('-', '3', 'y'),
 ('+', '', 'z')]
>>> {v: int(s+(c or '1')) for (s, c, v) in _ }
{'x0': -1, 'x1': 2, 'x2': 4, 'y': -3, 'z': 1}

正则表达式的细分:

  • ([+-])?\s* :可选符号,后跟空格
  • (?:(\d+)\s*\*\s*)? 可选系数,后跟*和空格; 仅捕获实际数字
  • ([az]\w*) : 变量名

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM