<pre><code>In [1]: a = ['jhfewrgjhdfjhgsufgssdfjgh;NR;3243;fgjdsgfjsdfkjgdf', 'dsafjhsafjkhefhajwejh;NR;123;dfgdsrhgjhdfgjhdsfjhg']
In [2]: a.sort(key=lambda x: x.split(';')[2])
In [3]: a
Out[3]:
['dsafjhsafjkhefhajwejh;NR;123;dfgdsrhgjhdfgjhdsfjhg',
'jhfewrgjhdfjhgsufgssdfjgh;NR;3243;fgjdsgfjsdfkjgdf']
</code></pre>
<p>正如下面的@EMS所指出的,可以在<code>NR;</code>上拆分,如果始终存在<code>NR;</code>,则可以使用其第一部分。在</p>
^{2}$
<p>这将按顺序对列表进行排序。如果要创建列表的副本(为其分配一个新变量),可以使用<code>sorted</code></p>
<pre><code>b = sorted(a, key=lambda x: int(x.split("NR;")[-1].split(";")[0]))
</code></pre>
<p>端到端:</p>
<pre><code># Includes an entry without the `;NR;`
In [1]: a = ['jhfewrgjhdfjhgsufgssdfjgh;NR;3243;fgjdsgfjsdfkjgdf', 'dsafjhsafjkhefhajwejh;NR;123;dfgdsrhgjhdfgjhdsfjhg', 'jhfewrgjhdfjhgsufgssdfjgh;fgjdsgfjsdfkjgdf']
# Remove any entry that doesn't have `;NR;` in it
In [2]: a = filter(lambda x: ';NR;' in x, a)
# Sort with an integer version of the number found (rather than the string)
In [3]: a.sort(key=lambda x: int(x.split("NR;")[-1].split(";")[0]))
In [4]: a
Out[4]:
['dsafjhsafjkhefhajwejh;NR;123;dfgdsrhgjhdfgjhdsfjhg',
'jhfewrgjhdfjhgsufgssdfjgh;NR;3243;fgjdsgfjsdfkjgdf']
</code></pre>