Skip to main content
 首页 » 编程设计

Python之解析字母和数字未被阻塞在一起的字符串

2025年05月04日19davidwang456

我在解析包含字母和数字的字符串并取回列表时遇到问题。例如:

>>> s = '105Bii2016' 
>>> foo(s) 
['105', 'Bii', '2016'] 

现在我只能在数字在一起的情况下这样做:

def foo(s): 
    num, letter = '', '' 
    for i in s: 
        if i.isdigit(): 
            num += i 
        else: 
            letter += i 
    return [letter, num] 

当我调用它时:

>>> s = '1234gdfh1234' 
 
>>> foo(s) 
 
['gdfh', '12341234'] 

请您参考如下方法:

itertools.groupby 怎么样:

>>> s = '1234gdfh1234' 
>>> from itertools import groupby 
>>> print [''.join(v) for k,v in groupby(s,str.isdigit)] 
['1234', 'gdfh', '1234'] 

另一种解决方案使用正则表达式:

>>> print [x for x in re.split(r'(\d+)',s) if x] 
['1234', 'gdfh', '1234']