這個問題(如果我理解正確的話)有明確的分離。刪除擴展名,從開頭和結尾刪除X個字符,然後再次添加擴展名以獲得最終答案。
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'
所以你的情況,你可以使用n=4
和m=13
。
如果你不知道長度,但你知道你想要的一切都包括在第一個下劃線之後,並且同樣地在第一個下劃線後面(這意味着在正常文件名中不能用下劃線或它的第一部分),這也將工作:
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'
即使該模式是別的東西,而是有規律可循的,你可以編寫與之相匹配的,像我這裏。
只是切片字符串:newFileName =文件[0:-5] –
@MaximilianPeters,是不是會切掉擴展? – Steven
如果你需要保持擴展,使用RFIND:newFileName =文件[0:file.rfind(「」)] –