python - 从满足某些条件的列表中删除某些元素

标签 python python-3.x list

我有一个包含一些文件名(位置)的列表,我想做的是从列表位置中删除每个元素。

条件:如果文件名以排除列表中的任何字符串开头,则不打印文件名。

locations = ['/data/mybackup/data/fil1',
            '/data/mybackup/data/fil2', 
            '/data/mybackup/data/fil3', 
            '/data/mybackup/song/fil1', 
            '/data/mybackup/song/fil2',
            '/data/mybackup/song/fil3', 
            '/data/archive/song/fil1', 
            '/data/archive/song/fil2', 
            '/data/archive/song/fil3', 
            '/data/archive/data/fil1', 
            '/local/archive/data/fil2', 
            '/local/archive/data/fil3',
            '/ebboks/wordpress/fil1', 
            '/ebooks/wordpress/fil2', 
            '/ebooks/wordpress/fil3']

excludes = [  '/data/archive/', '/data' , '/ebooks/'   ]

for location in locations:
  for exclude in excludes:
    if not location.startswith(exclude):
      print(location)
    break      

结果:

/data/mybackup/data/fil1
/data/mybackup/data/fil2
/data/mybackup/data/fil3
/data/mybackup/song/fil1
/data/mybackup/song/fil2
/data/mybackup/song/fil3
/local/archive/data/fil2
/local/archive/data/fil3
/ebboks/wordpress/fil1
/ebooks/wordpress/fil2
/ebooks/wordpress/fil3     

我的结果仍然有以'/data'开头的文件名

我的代码有什么问题?

最佳答案

str.startswith 接受一个 tuple 参数来检查,这样你就可以避免额外的循环来检查和担心排序比较,所以你可以使用:

exc = tuple(excludes)
# Or start with: excludes = ('/data/archive/', '/data' , '/ebooks/') instead
for location in locations:
    if not location.startswith(exc):
        print(location)

这给了你:

/local/archive/data/fil2
/local/archive/data/fil3
/ebboks/wordpress/fil1

关于python - 从满足某些条件的列表中删除某些元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46747503/

相关文章:

python - TinyDB插入失败

java - 如何使用 Java 8 方法对 List<List<>> 结构中的每个元素应用一些更改

python - wxPython 网格中的自动换行和换行

python - TypeError : __init__() missing 4 required positional arguments:

python - 如何根据另一列的过滤器或条件删除数据帧的重复行?

Python 3 多处理 - 我应该使用多少个进程?

list - 在 Pandas Dataframe 中查找空或 NaN 条目

java - 什么是Iterable接口(interface)中的forEach和spliterator,以及如何用链表实现

python - pytesseract 和 image.tif 文件

python - 不支持 pycharm flask 项目