擅长:python、mysql、java
<p>一种方法是使用正则表达式。在一个<code>.</code>或<code>_</code>后面接另一个<code>.</code>的数字后面取每个数字。你知道吗</p>
<pre><code>r = re.compile('(?:[._]+)([\d]+)')
for filename in filenames:
search_result = re.search(r, filename)
if not search_result is None:
print(search_result.group(1))
else:
print('no match could be found')
</code></pre>
<p>或者你只是用力向后走,取第一个连续的数字范围:</p>
<pre><code>digits = [str(i) for i in range(0, 10)]
for filename in filenames:
base_name = os.path.splitext(filename)[0]
frame = ''
for b in base_name[::-1]:
if b in digits:
frame = b + frame
elif frame:
print(frame)
break
</code></pre>
<p>两者的输出相同:</p>
<blockquote>
<pre><code>03
0040
0042
0043
0044
0045
0046
0047
0652
0653
0654
0656
0659
45
45
45
45
</code></pre>
</blockquote>