我想分割一个字符串,如下所示
1234ABC
加入123
和ABC
2B
加入2
和B
10E
加入10
和E
我发现split
功能不起作用,因为没有delimiter
答案 0 :(得分:5)
您可以将itertools.groupby
与布尔isdigit
函数一起使用。
from itertools import groupby
test1 = '123ABC'
test2 = '2B'
test3 = '10E'
def custom_split(s):
return [''.join(gp) for _, gp in groupby(s, lambda char: char.isdigit())]
for t in [test1, test2, test3]:
print(custom_split(t))
# ['123', 'ABC']
# ['2', 'B']
# ['10', 'E']
答案 1 :(得分:2)
使用re
模块很容易实现:
>>> import re
>>>
>>> re.findall('[a-zA-Z]+|[0-9]+', '1234ABC')
['1234', 'ABC']
>>> re.findall('[a-zA-Z]+|[0-9]+', '2B')
['2', 'B']
>>> re.findall('[a-zA-Z]+|[0-9]+', '10E')
['10', 'E']
>>> # addtionall test case
...
>>> re.findall('[a-zA-Z]+|[0-9]+', 'abcd1234efgh5678')
['abcd', '1234', 'efgh', '5678']
>>>
正则表达式使用非常简单。这里是快速浏览:
[a-zA-Z]+
:匹配一个或多个字母小写字母或大写字母|
或...... [0-9]+
:一个或多个整数答案 2 :(得分:2)
使用re package解决它的另一种方法
id