python - 选择文件名的特定部分将其移动到开头

标签 python renaming

我有一些视频类(class),我想用 Python 以特定方式重命名。这是一个示例文件名:

3D Graphics - Crash Course Computer Science #27-TEAtmCYYKZA.en"

我想选择“27”并将其移至文件名的开头,并一起删除“Crash Course Computer Science #”和“-TEAtmCYYKZA.en”部分。所以,我想要的输出是:

27 - 3D Graphics

另外两个例子:

Advanced CPU Designs - Crash Course Computer Science #9-rtAlC5J1U40
Boolean Logic & Logic Gates - Crash Course Computer Science #3-gI-qXk7XojA

到:

9 - Advanced CPU Designs
3 - Boolean Logic & Logic Gates

我知道如何进行删除部分,但我可以找到如何选择“# number”子字符串。我找到了一个 .split() 函数,但我还是看不出如何让它工作。

这是我到目前为止写的,但我已经停留在早期阶段。

import os

def rename():
    file_list = os.listdir(r"D:\Downloads\New folder")

    for file_name in file_list:
        os.rename(file_name, )

rename() 

最佳答案

鉴于您的示例,无需像这样的正则表达式即可轻松完成此操作:

代码:

def transform_name(filename):
    number = filename.split('#')[1].split('-')[0].strip()
    name = filename.split('-')[0].strip()
    return '{} - {}'.format(number, name)

在示例中使用:

os.rename(existing_filename, transform_name(existing_filename))

测试代码:

test_in = (
    "3D Graphics - Crash Course Computer Science #27-TEAtmCYYKZA.en",
    "Advanced CPU Designs - Crash Course Computer Science #9-rtAlC5J1U40",
    "Boolean Logic & Logic Gates - Crash Course Computer Science #3-gI-qXk7XojA",
)

desired_out = (
    "27 - 3D Graphics",
    "9 - Advanced CPU Designs",
    "3 - Boolean Logic & Logic Gates",
)

for data in zip(test_in, desired_out):
    assert transform_name(data[0]) == data[1], "{} != {}".format(
        transform_name(data[0]), data[1])

关于python - 选择文件名的特定部分将其移动到开头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48854697/

相关文章:

python - ld : library not found for -lboost_python on MacOS

iphone - 在 Xcode 中重命名或重构文件

c# - 如何在 Visual Studio 2008 中重命名现有的解决方案和项目?

php - 用 PHP for mySQL 重命名非法列名

python - Pandas:如果列名存在于不同列中,则将列值填充为 1

python - Scipy 用更复杂的函数优化 linprog

python - python中加密密码最安全的方法?

python imap : how to parse multipart mail content

powershell - 如何使用PowerShell根据每个文件中的特定内容重命名文件夹中的文件?

linux - 在两个单独的文件夹上连续重命名文件