我已经看到了目录中文件名替换的基本Python代码,但它们总是用于已知字符串,但是如何删除一定长度的随机字符?
这会有用吗?
newFileName = file.replace([-5:], "")
因为我试图从文件名中删除最后五个字符而不删除扩展名。
这是一个更新: 我想这样做:
DMC-CIWS15-AAAA-A00-00-0000-00A-018A-D_014-00_EN-US.xml
到
CIWS15-AAAA-A00-00-0000-00A-018A-D.xml
从最后删除DMC-和_014-00_EN-US。
我需要将其添加到修复文件目录的代码中。
答案 0 :(得分:2)
这个问题(如果我理解正确的话)有明确的分离。删除扩展名,从开头和结尾删除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'
即使模式是别的,但有一个模式,你可以编码来匹配它,就像我在这里一样。
答案 1 :(得分:0)
它不好但我希望这对你有用
如果您知道要重命名的文件具有相同的长度,则可以尝试:
>>>file = 'DMC-CIWS15-AAAA-A00-00-0000-00A-018A-D_014-00_EN-US.xml'
>>>ext = file[51:]
>>>newFile = file[4:38]+ext
当你打印newFile时,你现在有:
>>>print(newFile)
CIWS15-AAAA-A00-00-0000-00A-018A-D.xml