gpt4 book ai didi

python - 为什么这些字符串从我在 python 中的正则表达式中转义?

转载 作者:太空狗 更新时间:2023-10-30 00:46:48 26 4
gpt4 key购买 nike

在我的代码中,我将整个文件夹加载到列表中,然后尝试删除列表中除 .mp3 文件之外的所有文件。

import os
import re
path = '/home/user/mp3/'
dirList = os.listdir(path)
dirList.sort()
i = 0
for names in dirList:
match = re.search(r'\.mp3', names)
if match:
i = i+1
else:
dirList.remove(names)
print dirList
print i

在我运行该文件后,代码确实删除了列表中的一些文件,但特别保留了这两个文件:

['00. Various Artists - Indie Rock Playlist October 2008.m3u', '00. Various Artists - Indie Rock Playlist October 2008.pls']

我不明白这是怎么回事,为什么那两个专门逃避了我的搜索。

最佳答案

您正在一个循环中修改您的列表。这可能会导致问题。您应该遍历列表的副本(for name in dirList[:]:),或者创建一个新列表。

modifiedDirList = []
for name in dirList:
match = re.search(r'\.mp3', name)
if match:
i += 1
modifiedDirList.append(name)

print modifiedDirList

或者更好的是,使用列表理解:

dirList = [name for name in sorted(os.listdir(path))
if re.search(r'\.mp3', name)]

同样的事情,没有正则表达式:

dirList = [name for name in sorted(os.listdir(path))
if name.endswith('.mp3')]

关于python - 为什么这些字符串从我在 python 中的正则表达式中转义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4636300/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com