python如何拆分多个字符的字符串?

时间:2016-12-01 23:59:09

标签: python string python-3.x split delimiter

我想分割一个字符串,如下所示

1234ABC加入123ABC

2B加入2B

10E加入10E

我发现split功能不起作用,因为没有delimiter

3 个答案:

答案 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