擅长:python、mysql、java
<p>你可以做:</p>
<pre><code>lst = ["D9", "D10", "E9P", "E10P"]
def keys(val):
first = val[0]
number = int(''.join(filter(str.isdigit, val)))
return first, number
result = sorted(lst, key=keys)
print(result)
</code></pre>
<p><strong>输出</strong></p>
<pre><code>['D9', 'D10', 'E9P', 'E10P']
</code></pre>
<p>或者如果您想使用regex:</p>
<pre><code>def keys(val):
first = val[0]
number = int(re.search('\d+', val).group())
return first, number
</code></pre>
<p>或者也可以使用正则表达式:</p>
<pre><code>def keys(val):
alpha, digits = re.search('^([^\d]+)(\d+)', val).groups()
return alpha, int(digits)
</code></pre>
<p>最后一个函数的优点是它可以在字符串的开头容纳多个非数字字符。你知道吗</p>