从文件的前面删除一个由四个字符组成的字符串,从文件的结尾删除十三个字符

2024-06-16 09:34:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我看过目录中文件名替换的基本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-和\u014-00\u EN-US。你知道吗

我需要添加这个到一个代码,将修复一个目录的文件。你知道吗


Tags: 字符串代码目录文件名xml字符replacefile
2条回答

不太好,但我希望这对你有用

如果您知道要重命名的文件都具有相同的长度,可以尝试:

>>>file = 'DMC-CIWS15-AAAA-A00-00-0000-00A-018A-D_014-00_EN-US.xml'
>>>ext = file[51:]
>>>newFile = file[4:38]+ext

打印新文件时,您现在拥有:

>>>print(newFile)
CIWS15-AAAA-A00-00-0000-00A-018A-D.xml

这个问题(如果我理解正确的话)有一个明显的区别。删除扩展名,从开头和结尾删除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=4m=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'

即使模式是其他的,但是有一个模式,你也可以编写代码来匹配它,就像我在这里看到的那样。你知道吗

相关问题 更多 >