python - 删除文件名前面的四个字符和末尾的十三个字符的字符串

标签 python substring

我已经看到了目录中文件名替换的基本 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。

我需要将其添加到修复文件目录的代码中。

最佳答案

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

即使模式是其他的,但有一个模式,您可以编写代码来匹配它,就像我在这里一样。

关于python - 删除文件名前面的四个字符和末尾的十三个字符的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41006822/

相关文章:

python - Redis使用python获取数据

python - 为什么我在这个 python 代码中得到 "AttributeError: ' str' object has no attribute 'write' “

python - 比较两个元组列表以创建包含最高值的新元组

java - Java中最快的子串搜索方法是什么

python - "self"里面的普通函数?

java - Java 句子中短语的子串

c - 最快的子串搜索算法是什么?

actionscript-3 - AS3 - 查找两个其他子字符串之间的子字符串

xml - 使用 substring-after 在 XPath 查询中搜索文本

python - 如何在标识空列表的 numpy bool 数组中创建空列表?