擅长:python、mysql、java
<p>这个问题(如果我理解正确的话)有一个明显的区别。删除扩展名,从开头和结尾删除X个字符,然后再次添加扩展名以获得最终答案。你知道吗</p>
<pre><code>import os
oldFileName = 'xxxx-filename-xxxxx.XML'
# remove n chars in beginning, m chars at end
n = 5
m = 6
name, ext = os.path.splitext(oldFileName)
# splice away the chars, and add the extension
newFileName = '{}{}'.format(name[0:-m][n:], ext)
# newFileName == 'filename.XML'
</code></pre>
<p>所以在您的例子中,您将使用<code>n=4</code>和<code>m=13</code>。你知道吗</p>
<p>如果您不知道文件的长度,但您知道您希望所有内容都达到并包括第一个破折号,以及第一个下划线之后的所有内容(这意味着普通文件名或文件的第一部分中不能有下划线),这也会起作用:</p>
<pre><code>import os
oldFileName = 'DMC-CIWS15-AAAA-A00-00-0000-00A-018A-D_014-00_EN-US.xml'
name, ext = os.path.splitext(oldFileName)
newFileName = '{}{}'.format(name[name.index('-')+1:name.index('_')], ext)
# newFileName == 'CIWS15-AAAA-A00-00-0000-00A-018A-D.xml'
</code></pre>
<p>即使模式是其他的,但是有一个模式,你也可以编写代码来匹配它,就像我在这里看到的那样。你知道吗</p>