python - Sympy:使用 Wild 符号替换

标签 python regex sympy symbolic-math

我正在尝试进行通用子表达式替换。

我想将 x*y 形式的任何表达式完全替换为 c

请注意,xy 可以是表达式中的任何符号。

在下面的代码中,我使用 Wild 来实现这一点,但显然我无法只使用 Wild 匹配符号,而不是子表达式 - 即使使用 isinstance=[sp.Symbol]

import sympy as sp
a, b, c = sp.symbols('a b c')

f= a*b - b

x = sp.Wild('x', isinstance=[sp.Symbol])
y = sp.Wild('y', isinstance=[sp.Symbol])

expr = f.replace(x*y, c)

这导致了以下结果,

print expr
c

预期的答案是:c - b

非常感谢您的帮助!

谢谢!

最佳答案

isinstance 不是 Wild 的真正参数。

您正在寻找的参数是properties。虽然它似乎没有记录,但该参数采用一个函数列表,这些函数应该适用于匹配的表达式。您可以使用它来将符号与

匹配
In [7]: f= a*b - b

In [14]: y = sp.Wild('y', properties=[lambda x: isinstance(x, Symbol)])

In [15]: x = sp.Wild('x', properties=[lambda x: isinstance(x, Symbol)])

In [16]: f.replace(x*y, c)
Out[16]: -b + c

关于python - Sympy:使用 Wild 符号替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36168011/

相关文章:

python - Twisted 中的异步客户端不发送/接收请求(使用 NetStringReceiver)

c# - 波斯日历正则表达式日期格式

python - 同情错误?即使使用 `evaluate=False` 方程也会自动处理

javascript - 在网页上进行文本替换的最简洁方法? (使用 GreaseMonkey)

trigonometry - Sympy 取消极坐标变换雅可比矩阵中的项

python - 如何将积分放入 python/matplotlib 的函数中

python - 如何对数字字符串的python列表进行排序

python - 如何在 Python 中抓取 Kaggle 数据集的无限滚动页面?

python - Celery、Django .. 制作任务/线程启动子任务/线程?

javascript - 正则表达式用@here 或空白转义 <!here|@here> 的所有匹配项