-1

示例(假设这是一个字符串):

0.1+0.5*(sign(t-0.5)+1)*t + sign(t+0.8)

我必须在符号函数的括号之间获取字符串“t-0.5”和“t+0.8”(在这种情况下为=字符串),以便在替换后我可以得到例如:

0.1+0.5*(copysign(1,t-0.5)+1)*t + copysign(1,t+0.8)

任何帮助,将不胜感激。

4

2 回答 2

1

您的问题不是很清楚,但是如果您想要针对这种特定情况的解决方案,那么这里是:

>>> s = '0.1+0.5*(sign(t-0.5)+1)*t + sign(t+0.8)'
>>> s.replace('sign(', 'copysign(1,')
'0.1+0.5*(copysign(1,t-0.5)+1)*t + copysign(1,t+0.8)'

如果您想要更通用的替代品,那可能会非常棘手。

于 2013-07-03T00:34:50.700 回答
1

您可以使用正则表达式:

>>> import re
>>> s = '0.1+0.5*(sign(t-0.5)+1)*t + sign(t+0.8)'
>>> print re.sub(r'sign\((t.*?)\)', r'copysign(1,\1)', s)
0.1+0.5*(copysign(1,t-0.5)+1)*t + copysign(1,t+0.8)

有人可能会想出更好的表达方式;我不擅长正则表达式。但它有效:)。

于 2013-07-03T00:35:11.130 回答