在循环中的特定位置向字符串添加字母(排序问题)

cre*_*nco 1 python python-3.x

我的排序有问题。想要对列表进行排序

['asd_1qwer', 'asd_14qwer', 'asd_26qwer', 'asd_5qwer']
Run Code Online (Sandbox Code Playgroud)

我发现我需要在 1 和 5 上加零。

['asd_01qwer', 'asd_05qwer', 'asd_14qwer', 'asd_26qwer']
Run Code Online (Sandbox Code Playgroud)

不知道如何将其添加到正确的位置,因为asd不是静态的。

list = ['asd_14qwer','asd_5qwer','asd_26qwer','asd_1qwer']
list.sort()

for i in list:
    tempo = i.split('_')[-1].split('qwer')[0]

    if len(tempo) == 1:
        i[:4] + '0' + i[4:]
Run Code Online (Sandbox Code Playgroud)

编辑需要将 0 添加到 1-9 并qwer在所有标签上列出常量。

Bło*_*tek 7

实际上,如果您的目标是根据字符串的数字部分对列表进行排序,则不需要对这些数字部分进行零填充,您只需要提供将sort()数字部分提取为整数的 key 函数:

l = ['asd_14qwer','asd_5qwer','asd_26qwer','asd_1qwer']
l.sort(key=lambda x: int(x.split('_')[-1].rstrip('qwer')))
Run Code Online (Sandbox Code Playgroud)

请注意,此代码不依赖于前面的字符_,仅依赖于_和之间的数字部分qwer