<p>您可以使用<code>c in '0123456789'</code>或<code>c.isdigit</code>筛选出非数字字符:</p>
<pre class="lang-py prettyprint-override"><code>>>> s = 'b150brown'
>>> ''.join(c for c in s if c.isdigit())
'150'
>>> int(''.join(c for c in s if c.isdigit()))
150
</code></pre>
<p>然后将其用作<code>key</code>的<code>list.sort</code>参数:</p>
<pre class="lang-py prettyprint-override"><code>coords = ['`154blue', '`155blue', 'a154blue', 'a155blue', 'b154blue', 'b155blue', 'c154blue', 'c155blue', 'd154blue', 'd155blue', 'e155blue', '`156brown', 'a156brown', 'a158brown', 'b150brown']
coords.sort(key=lambda s: int(''.join(c for c in s if c.isdigit())))
print(coords)
# ['b150brown', '`154blue', 'a154blue', 'b154blue', 'c154blue', 'd154blue', '`155blue', 'a155blue', 'b155blue', 'c155blue', 'd155blue', 'e155blue', '`156brown', 'a156brown', 'a158brown']
</code></pre>
<p>此外,当字符串具有相同的编号时,可以通过按字典顺序对字符串进行排序来打破联系,如<a href="https://stackoverflow.com/questions/64493890/trying-to-sort-alphanumeric-coordinates/64493955?noredirect=1#comment114046180_64493955">Shash Sinha</a>所示:</p>
<pre class="lang-py prettyprint-override"><code>coords = ['`154blue', '`155blue', 'a154blue', 'a155blue', 'b154blue', 'b155blue', 'c154blue', 'c155blue', 'd154blue', 'd155blue', 'e155blue', '`156brown', 'a156brown', 'a158brown', 'b150brown']
coords.sort(key=lambda s: (int(''.join(c for c in s if c.isdigit())), s))
print(coords)
# ['b150brown', '`154blue', 'a154blue', 'b154blue', 'c154blue', 'd154blue', '`155blue', 'a155blue', 'b155blue', 'c155blue', 'd155blue', 'e155blue', '`156brown', 'a156brown', 'a158brown']
</code></pre>