Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python—解析字母和数字未阻塞在一起的字符串_Python_Parsing - Fatal编程技术网

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

Python—解析字母和数字未阻塞在一起的字符串,python,parsing,Python,Parsing,我在解析包含字母和数字的字符串并获取列表时遇到问题。例如: >>> s = '105Bii2016' >>> foo(s) ['105', 'Bii', '2016'] 现在,我只能在这些数字都在一起的情况下才能做到: def foo(s): num, letter = '', '' for i in s: if i.isdigit(): num += i else:

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

>>> 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']

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']

你想要的结果是什么?
print re.split(“[a-zA-Z]”),s)
@JoranBeasley——我想你需要一些括号。可能更简单的方法是重新拆分(r'(\d+),s)。当然,这两种方法都假设字符串以字符或数字开头,如果你猜错了,那么在列表的开头(或结尾)会出现空字符串,这意味着你可能需要对其进行过滤…是的,你是正确的。。。我心烦意乱,没有想清楚:(你想要的结果是什么?
print re.split(“[a-zA-Z]”,s)
@JoranBeasley——我想你需要一些捕捉括号。也许更简单的方法是
re.split(r'(\d+),s)
。当然,这两种方法都假设字符串以字符或数字开头,如果您猜错了,列表的开头(或结尾)会出现空字符串,这意味着您可能需要对其进行过滤……是的,您是对的……我当时心烦意乱,没有清晰地思考:(