如何使用python编辑列表中的字符?

2024-04-20 09:39:30 发布

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

我有这样一个清单:

['01. The A Team.mp3', '02. Drunk.mp3', '03. UNI.mp3', '04. Grade 8.mp3']

如何删除每个元素开头的数字部分(如01.02.等)和每个元素末尾的.mp3部分?你知道吗


Tags: the元素数字mp3teamunigrade末尾
3条回答
old_list = ['01. The A Team.mp3', '02. Drunk.mp3', '03. UNI.mp3', '04. Grade 8.mp3']
new_list = [el.split(".")[1].strip() for el in old_list]

你想给你的字符串下标。尝试类似[x[4:-4] for x in ['01. The A Team.mp3', '02. Drunk.mp3', '03. UNI.mp3', '04. Grade 8.mp3']]的操作。你知道吗

如果要更改的文件名可能包含.mp3以外的结尾,则需要修改一个解决方案,以实际验证您正在删除您希望删除的内容。你知道吗

import re

def fix_name(name):
    if name.endswith('.mp3'):
        name = name[:-4]

    return re.sub(r'^[0-9]+\. ', '', name)

a = ['01. The A Team.mp3', '02. Drunk.mp3', '03. UNI.mp3', '04. Grade 8.mp3']
print(list(map(fix_name, a)))

正则表达式将删除任何数字([0-9]+),后跟一个点和字符串开头的空格(.)。你知道吗

In: ['01. The A Team.mp3', '02. Drunk.mp3', '03. UNI.mp3', '04. Grade 8.mp3']
Out: ['The A Team', 'Drunk', 'UNI', 'Grade 8']

map将函数应用于列表中的每个元素,而创建列表需要list,因为我们不会迭代来自map(它是一个生成器)的结果。你知道吗

相关问题 更多 >