我正在使用包含网址的列表,并希望过滤掉.jpg,jpeg和.png等扩展名。
我尝试使用列表理解:[elem for elem in li if elem!=“.jpg”]但这只会过滤一个字符串。
有没有办法解决这个问题?
感谢。
答案 0 :(得分:2)
不是检查元素是否与单个字符串相等,而是检查元素是否存在于集合中,其中集合的每个成员都是您要匹配的字符串:
blacklist = set(['.jpg', '.jpeg', '.png'])
filtered = [elem for elem in li if elem not in blacklist]
但是,您提到您正在尝试从网址列表中过滤扩展程序,这表明您需要专门检查字符串是否以扩展名结尾,而不是整个字符串等于扩展名。在这种情况下,您真的想要这样做:
blacklist = ('.jpg', '.jpeg', '.png')
filtered = [elem for elem in li if not elem.endswith(blacklist)]
这可确保elem
不会以blacklist
中的任何项目结束。