如何在python中拆分字母数

时间:2013-02-05 20:36:03

标签: python

如果我有一个像“MZA11LTE12DEP108N”这样的字符串,它是字母组和数字组的串联,我如何用它们之间的分隔符空格字符拆分它们?在python中

5 个答案:

答案 0 :(得分:10)

假设我理解你,itertools.groupby可以工作:

>>> import itertools
>>> s = "MZA11LTE12DEP108N"
>>> [''.join(g) for k, g in itertools.groupby(s, str.isalpha)]
['MZA', '11', 'LTE', '12', 'DEP', '108', 'N']
>>> ' '.join(''.join(g) for k, g in itertools.groupby(s, str.isalpha))
'MZA 11 LTE 12 DEP 108 N'

答案 1 :(得分:3)

或正则表达式解决方案:

>>> import re
>>> s = "MZA11LTE12DEP108N"
>>> re.sub('(?<=\d)(?!\d)|(?<!\d)(?=\d)', ' ', s)
'MZA 11 LTE 12 DEP 108 N'

更详细地说:

re.compile("""
    (?<=\d) # an empty string preceded by a digit
    (?!\d)  # followed by a non-digit
    |   # or
    (?<!\d) # an empty string preceded by a non-digit
    (?=\d)  # followed by a digit
""", re.VERBOSE).sub(' ', s)

答案 2 :(得分:1)

嗯这是解决方案,但它太复杂了:D,我发布它只是作为开箱即用LOL的另一种解决方案

counter=0
txt='MZA11LTE12DEP108N'
string= ' '
while counter<len(txt):
    figure=str(txt[counter])
    if figure.isdigit():
        if string[-1].isdigit():
           string +=figure
        else:
            string += " "+figure
    else:
        if figure.isalpha():
            if string[-1].isalpha():string+=figure
            else:string += " "+figure

    counter+=1
string = string.strip()

答案 3 :(得分:0)

如果您想要将变量中的字符和另一个中的数字分开,那么请将它们两者之间的空格分开,然后:

variable = "MZA11LTE12DEP108N"
varlist = list(variable)
num = len(varlist)
strings = ''
digits = ''
for i in range(num):
    if varlist[i].isalpha():
        strings += varlist[i]
    elif varlist[i].isdigit():
        digits += varlist[i]
variable = strings+' '+digits

不确定这是否是最佳方式。

答案 4 :(得分:0)

出于某种原因,我认为其目的是删除非数字 sigh 因此我以前的错误答案。

In [473]: re.findall(r'(\D+|\d+)',"MZA11LTE12DEP108N")
Out[473]: ['MZA', '11', 'LTE', '12', 'DEP', '108', 'N']