Python:在字符串中查找子字符串

时间:2017-02-18 21:21:08

标签: python regex string substring matching

好的,所以我有两个清单;一个是歌曲标题列表,另一个是通过运行toSecondsPart生成的文件列表,这将是歌曲mp3文件。

已更新

os.listdir()

每首歌都是unicode

songs = ['The Prediction', 'Life We Chose', 'Nastradamus', 'Some of Us Have Angels', 'Project Windows', 'Come Get Me', "Shoot 'em Up", 'Last Words', 'Family', 'God Love Us', 'Quiet Niggas', 'Big Girl', 'New World', 'You Owe Me', 'The Outcome']

每个文件名都是一个字符串

我希望能够查看歌曲列表,如果歌曲列表中的一个项目在文件名列表中匹配,则将文件重命名为歌曲的文件。

这有意义吗?

2 个答案:

答案 0 :(得分:1)

这是一个将维护文件扩展名的版本,无论它是什么,并且通过在匹配后从filenames数组中删除它来避免相同的文件名匹配两次。它也不区分大小写:

for song in songs:
    for i, filename in enumerate(filenames):
        if song.upper() in filename.upper():
            os.rename(filename, song + os.path.splitext(filename)[1])
            del filenames[i]
            break

您还可以首先循环文件名,但问题也可能是两个文件名与同一首歌匹配,rename操作会在第二个上引发错误。因此,在设置中,一旦与文件名匹配,您最好从歌曲列表中删除该歌曲。

答案 1 :(得分:0)

在按照您的方式定义列表之后,您希望遍历每个文件,然后针对每个歌曲名称进行检查。看起来应该是这样的:

for f in filenames:
    for s in songs:
        if s in f:
            os.rename(f,s+".mp3")

这样,文件也会保留mp3扩展名。