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

例如,我得到以下输入:

-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,先进行或不进行=拆分:

>>> [re.findall(r"-?\d+x?", s2) for s2 in s.split("=")]
[['-3x', '-5x', '2'], ['9x', '-9']]

Python pytz时区函数返回的时区为9分钟 - python

由于某些原因,我无法从以下代码中找出原因:>>> from pytz import timezone >>> timezone('America/Chicago') 我得到:<DstTzInfo 'America/Chicago' LMT-1 day, 18:09:00 STD…

在返回'Response'(Python)中传递多个参数 - python

我在Angular工作,正在使用Http请求和响应。是否可以在“响应”中发送多个参数。角度文件:this.http.get("api/agent/applicationaware").subscribe((data:any)... python文件:def get(request): ... return Response(seriali…

Python exchangelib在子文件夹中读取邮件 - python

我想从Outlook邮箱的子文件夹中读取邮件。Inbox ├──myfolder 我可以使用account.inbox.all()阅读收件箱,但我想阅读myfolder中的邮件我尝试了此页面folder部分中的内容,但无法正确完成https://pypi.python.org/pypi/exchangelib/ 参考方案 您需要首先掌握Folder的myfo…

如何将Python字节字符串表示形式转换为字节? - python

我在文本文件中存储了许多Python字节对象,这些Python打印的内容类似于"b'\x80\x03}q\x00.'"如何将每个对象转换回字节对象?换句话说,我正在尝试找到一个执行convert("b'\x80\x03}q\x00.'") == b'\x80\x03}q…

语法中的Python字符串 - python

看到一段使用'str in str in str'语法的代码很奇怪,例如:>>> 'test' in 'testtest' in 'testtesttest' True >>> 'test' in 'testtest' in…