如何拆分 python 列表元素中的两个字符?
How can I split between two characters in a list element in python?
我正在尝试创建可以将数学方程划分为不同部分(数字和运算符)的字符串解析器。现在,我正在尝试创建一个列表来分隔不同的部分。
例如:[“123”、“+”、“123”]
但是,我正在尝试以一种不需要我在输入中写入 spaces 的方式进行。而不是输入:“123 + 123”,我想写:“123 + 123”。我将如何拆分加号和数字之间的字符串并将其附加到列表中?
我知道如果我在“123+123”之间添加一个 space,我将能够拆分它,但我的目标是能够在没有 [=22 的情况下拆分它=]s;只是一大段文字。
到目前为止,我已经尝试将它从加号中拆分出来,但只是删除了它,只剩下 ["123", "123"]
equation = input("Equation: ")
>> Equation: 123+123
mylist = []
l.append(equation)
for x in mylist:
print(x.split("+"))
>> ["123", "123"]
这会做你想做的事。
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 中进行了描述。基本上在这里使用括号创建一个捕获组,文本模式作为列表的一部分返回。
使用re.split you could use a capturing group to keep the delimiter and lookarounds断言左边是数字,右边是数字:
(?<=\d)([+])(?=\d)
说明
(?<=\d)
正向后视,断言直接在左边的是一个数字
([+])
在群里抓一个+
(?=\d)
正面前瞻,断言直接左边是数字
import re
s = "123+123"
s = re.compile("(?<=\d)([+])(?=\d)").split(s)
print(s)
结果
['123', '+', '123']
我正在尝试创建可以将数学方程划分为不同部分(数字和运算符)的字符串解析器。现在,我正在尝试创建一个列表来分隔不同的部分。
例如:[“123”、“+”、“123”]
但是,我正在尝试以一种不需要我在输入中写入 spaces 的方式进行。而不是输入:“123 + 123”,我想写:“123 + 123”。我将如何拆分加号和数字之间的字符串并将其附加到列表中?
我知道如果我在“123+123”之间添加一个 space,我将能够拆分它,但我的目标是能够在没有 [=22 的情况下拆分它=]s;只是一大段文字。
到目前为止,我已经尝试将它从加号中拆分出来,但只是删除了它,只剩下 ["123", "123"]
equation = input("Equation: ")
>> Equation: 123+123
mylist = []
l.append(equation)
for x in mylist:
print(x.split("+"))
>> ["123", "123"]
这会做你想做的事。
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 中进行了描述。基本上在这里使用括号创建一个捕获组,文本模式作为列表的一部分返回。
使用re.split you could use a capturing group to keep the delimiter and lookarounds断言左边是数字,右边是数字:
(?<=\d)([+])(?=\d)
说明
(?<=\d)
正向后视,断言直接在左边的是一个数字([+])
在群里抓一个+
(?=\d)
正面前瞻,断言直接左边是数字
import re
s = "123+123"
s = re.compile("(?<=\d)([+])(?=\d)").split(s)
print(s)
结果
['123', '+', '123']