擅长:python、mysql、java
<p>其思想是使用<a href="https://docs.python.org/2/library/functions.html#sorted" rel="nofollow">^{<cd1>}</a>对数据进行排序,指定<code>key</code><code>lambda</code>函数,该函数使用<a href="https://docs.python.org/2/library/re.html" rel="nofollow">regular expression</a>提取<code>Dnext_</code>之后和括号内的数字:</p>
<pre><code>import re
pattern = re.compile('Dnext_(\d+)\[(\d+)\]')
with open('input.txt') as f:
print sorted(f, key=lambda x: map(int, pattern.search(x).groups()))
</code></pre>
<p>印刷品:</p>
<pre><code>Dnext_0[0]
Dnext_0[1]
Dnext_0[11]
Dnext_0[128]
Dnext_1[0]
</code></pre>
<p><code>Dnext_(\d+)\[(\d+)\]</code>正则表达式使用捕获组来提取<code>Dnext_</code>后面的数字和括号中的数字:</p>
<pre><code>>>> import re
>>> pattern = re.compile('Dnext_(\d+)\[(\d+)\]')
>>> pattern.search('Dnext_0[11]').groups()
('0', '11')
</code></pre>
<p><code>map(int, ... )</code>有助于将提取的数字转换为python整数(请参见<a href="https://docs.python.org/2/library/functions.html#map" rel="nofollow">^{<cd8>}</a>):</p>
<pre><code>>>> map(int, pattern.search('Dnext_0[11]').groups())
[0, 11]
</code></pre>
<p>希望有帮助。你知道吗</p>