【发布时间】:2021-11-28 05:48:04
【问题描述】:
x="3x^2+2x-1"
x=re.split(r"[\^]|([-])|[+]", x)
print(x)
#returns: ['3x', None, '2', None, '2x', '-', '1']
我认为它应该返回类似 ['3x','2','2x','-','1'] 的内容。对不起,我确定我只是误会了。谢谢!
【问题讨论】:
x="3x^2+2x-1"
x=re.split(r"[\^]|([-])|[+]", x)
print(x)
#returns: ['3x', None, '2', None, '2x', '-', '1']
我认为它应该返回类似 ['3x','2','2x','-','1'] 的内容。对不起,我确定我只是误会了。谢谢!
【问题讨论】:
您用于拆分的正则表达式模式中有一个捕获组,但它仅包含减号运算符。只需在捕获组内拆分字符类([\^*/+-])。这将拆分任何运算符,但也会将该运算符包含在输出列表中。
x = "3x^2+2x-1"
x = re.split(r"([\^*/+-])", x)
print(x) # ['3x', '^', '2', '+', '2x', '-', '1']
【讨论】:
x = [y for y in re.split(r"[\^]|([-])|[+]", x) if y != None]
我不是 RegEx 向导,但您可以删除所有无。
【讨论】: