如何在python的列表元素中的两个字符之间分割?

时间:2019-06-22 19:21:50

标签: python list split equation

我正在尝试创建可以将数学方程式划分为不同部分(数字和运算符)的字符串解析器。现在,我正在尝试创建一个列表,以区分不同部分。

例如:[“ 123”,“ +”,“ 123”]

但是,我正在尝试以一种不需要我在输入中写空格的方式进行操作。我不想输入:“ 123 + 123”,而是要输入:“ 123 + 123”。如何在加号和数字之间分割字符串并将其附加到列表中?

我知道,如果在“ 123 + 123”之间添加空格,则可以拆分它,但我的目标是能够在没有空格的情况下拆分它。只是一大段文字。

到目前为止,我已经尝试将其与加号分开,但这只是将其删除而给我留下[“ 123”,“ 123”]

equation = input("Equation: ")

>> Equation: 123+123

mylist = []

l.append(equation)

for x in mylist:
    print(x.split("+"))

>> ["123", "123"]

2 个答案:

答案 0 :(得分:1)

使用re.split,您可以使用捕获组保留定界符,并使用lookarounds来声明左边的内容和右边的数字:

(?<=\d)([+])(?=\d)

说明

  • (?<=\d)在后​​面看起来,断言直接在左边是数字
  • ([+])分组捕获+
  • (?=\d)前瞻,断言直接在左边是数字

Regex demo | Python demo

import re

s = "123+123"
s = re.compile("(?<=\d)([+])(?=\d)").split(s)
print(s)

结果

['123', '+', '123']

答案 1 :(得分:0)

这会做你想要的。

import re

input_string = '123+123'

output_string = re.split('(\\+)', input_string)  # additionally can be written r'(\+)'

print(output_string)

输出为['123', '+', '123']

re.split()行为在文档https://docs.python.org/3/library/re.html#re.split中进行了描述。基本上,这里使用括号组成一个捕获组,并且文本模式作为列表的一部分返回。