gpt4 book ai didi

python - 如何使用python拆分字符串中的代数表达式?

转载 作者:行者123 更新时间:2023-12-03 18:44:30 25 4
gpt4 key购买 nike

例如我得到以下输入:

-9x+5x-2-4x+5

我需要获得以下列表:
['-9x', '5x',  '-2',  '-4x', '5']

这是我的代码,但我不知道如何处理缺点。
import re
text = '-3x-5x+2=9x-9'
text = re.split(r'\W', text)
print(text)

警告:我不能使用除 re 和 math 之外的任何库。

最佳答案

您可以 re.findall后跟 + 的所有字符组或 - (或字符串结尾 $ ),然后 strip + (与 - 一样,仍然是下一组的一部分)来自子字符串。

>>> s = "-9x+5x-2-4x+5"
>>> [x.strip("+") for x in re.findall(r".+?(?=[+-]|$)", s)]
['-9x', '5x', '-2', '-4x', '5']

同样,对于带有 = 的第二个字符串,将其添加到字符组并将其从子字符串中删除:
>>> s = '-3x-5x+2=9x-9'
>>> [x.strip("+=") for x in re.findall(r".+?(?=[+=-]|$)", s)]
>>> ['-3x', '-5x', '2', '9x', '-9']

或者将原始推导式应用于分割后的子串 = ,取决于结果应该是什么样子:
>>> [[x.strip("+") for x in re.findall(r".+?(?=[+-]|$)", s2)] for s2 in s.split("=")]
>>> [['-3x', '-5x', '2'], ['9x', '-9']]

其实现在想起来,你也可以直接 findall匹配一个可选的减号,后跟一些数字,和一个可选的 x , 有或没有 split =第一的:
>>> [re.findall(r"-?\d+x?", s2) for s2 in s.split("=")]
[['-3x', '-5x', '2'], ['9x', '-9']]

关于python - 如何使用python拆分字符串中的代数表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58953530/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com