擅长:python、mysql、java
<p>当您标记python时,我想您愿意使用python</p>
<p>(编辑:我意识到在我的原始代码中不需要循环。)</p>
<pre class="lang-py prettyprint-override"><code>import re
with open('filename.txt', 'r') as f:
files = f.read().splitlines() # read filenames
# assume: an episode comprises of 3 digits possibly preceded by 0
p = re.compile(r'0?(\d{3})')
for file in files:
if m := p.search(file):
print(m.group(1) + '.' + file.split('.')[-1])
else:
print(file)
</code></pre>
<p>这将输出</p>
<pre><code>609.m4v
610.m4v
585.mp4
621.mkv
629.mkv
745.mp4
696.mp4
591.m4v
577.mp4
</code></pre>
<p>基本上,它搜索第一个3位数字,前面可能是0</p>
<p>我强烈建议您检查输出;特别是,您需要运行<code>sort OUTPUTFILENAME | uniq -d</code>以查看是否存在重复的目标名称</p>
<p>(原始答复:)</p>
<pre><code>p = re.compile(r'\d{3,4}')
for file in files:
for m in p.finditer(file):
ep = m.group(0)
if int(ep) < 1000:
print(ep.lstrip('0') + '.' + file.split('.')[-1])
break # go to next file if ep found (avoid the else clause)
else: # if ep not found, just print the filename as is
print(file)
</code></pre>