Python 如何填充字符串中的所有数字

Python 如何填充字符串中的所有数字,python,string,Python,String,我有很多地址样式的字符串,我想以一种合理的方式对它们进行排序 我希望将所有数字填充到一个字符串中,以便“Flat 12A High Rise”变为“Flat 00012A High Rise”,字符串中可能有多个数字 到目前为止,我已经: def pad_numbers_in_string(string, padding=5): numbers = re.findall("\d+", string) padded_string = '' for number in num

我有很多地址样式的字符串,我想以一种合理的方式对它们进行排序

我希望将所有数字填充到一个字符串中,以便“Flat 12A High Rise”变为“Flat 00012A High Rise”,字符串中可能有多个数字

到目前为止,我已经:

def pad_numbers_in_string(string, padding=5):
    numbers = re.findall("\d+", string)
    padded_string = ''
    for number in numbers:
        parts = string.partition(number)
        string = parts[2]
        padded_string += "%s%s" % (parts[0], parts[1].zfill(padding))
    padded_string += string

return padded_string

这能改进吗?我觉得很难受

与其更改数据以适应排序算法,不如更改排序算法以适应数据

见:

这个怎么样

re.sub('\d+', lambda x:x.group().zfill(padding), s)
例如:

>>> s = "Flat 12A High Rise 101B"
>>> padding = 5
>>> re.sub('\d+', lambda x:x.group().zfill(padding), s)
'Flat 00012A High Rise 00101B'
>>> 

约翰-那太棒了,正是我最初想要的,但我不知道怎么做!非常感谢。
>>> s = "Flat 12A High Rise 101B"
>>> padding = 5
>>> re.sub('\d+', lambda x:x.group().zfill(padding), s)
'Flat 00012A High Rise 00101B'
>>>