擅长:python、mysql、java
<p>对列表排序总是接受“key”参数,并且可以将任意函数作为key传递。在您的情况下,函数应该执行以下操作:</p>
<ol>
<li>找到“NR”后面的那部分字符串</li>
<li>找到该部分的初始部分,即“;”之前的部分,并将其解析为整数。在</li>
</ol>
<p>这里有一种方法</p>
<pre><code>def func(st): # I am using your first string as a running example in this code
nr_part = st.split("NR;")[1] # returns "3243;fgjdsgfjsdfkjgdf"
int_part = nr_part.split(";")[0] # returns "3243"
return int(int_part)
</code></pre>
<p>现在,您可以使用filter分离出包含“NR;”的字符串。在</p>
^{2}$
<p>最后,对结果列表进行排序很简单</p>
<pre><code>aa = ['jhfewrgjhdfjhgsufgssdfjgh;NR;3243;fgjdsgfjsdfkjgdf', 'dsafjhsafjkhefhajwejh;NR;123;dfgdsrhgjhdfgjhdsfjhg']
a.sort(a, key=func) # in place sorting
</code></pre>
<p>或者</p>
<pre><code>sorted(a, key=func) # Return a new sorted list
</code></pre>
<p>一些注意事项:必须确保列表中的所有字符串都能满足“NR;<;int>;”regex的假设,并且字符串的int部分不应太大,这样“int()”转换不会导致溢出。在</p>