Python筛选/从列表中删除URL
我有一个URL的文本文件,大约14000个。以下是几个例子:Python筛选/从列表中删除URL,python,url,list,filter,Python,Url,List,Filter,我有一个URL的文本文件,大约14000个。以下是几个例子: 我已经将文本文件加载到一个Python列表中,我正在尝试将所有带有CONTENT\u ITEM\u ID的URL分离到它们自己的列表中。在Python中实现这一点的最佳方法是什么 干杯 过滤器对list1(第二个参数)的每个元素调用函数(第一个参数)。如果函数返回true(非零),则将元素复制到输出列表 lambda基本上创建了一个临时的未命名函数。这只是为了避免创建函数然后传递它,如下所示: function look_f
我已经将文本文件加载到一个Python列表中,我正在尝试将所有带有CONTENT\u ITEM\u ID的URL分离到它们自己的列表中。在Python中实现这一点的最佳方法是什么 干杯 过滤器对list1(第二个参数)的每个元素调用函数(第一个参数)。如果函数返回true(非零),则将元素复制到输出列表 lambda基本上创建了一个临时的未命名函数。这只是为了避免创建函数然后传递它,如下所示:
function look_for_content_item_id( elem ):
if elem.find( 'CONTENT_ITEM_ID') == -1:
return 0
return 1
list2 = filter( look_for_content_item_id, list1 )
下面是Graeme的另一个替代方案,使用较新的列表理解语法:
list2= [line for line in file if 'CONTENT_ITEM_ID' in line]
你喜欢哪一个是品味的问题 我喜欢@bobince的答案(+1),但会提高赌注
由于您有一个相当大的起始集,您可能希望避免将整个列表加载到内存中。除非您需要整个列表来执行其他任务,否则您可以使用来执行相同的任务,方法是根据请求逐项建立筛选列表:
for filtered_url in (line for line in file if 'CONTENT_ITEM_ID' in line):
do_something_with_filtered_url(filtered_url)
完整性;您也可以使用
ifilter
。它类似于过滤器,但不建立列表
from itertools import ifilter
for line in ifilter(lambda line: 'CONTENT_ITEM_ID' in line, urls):
do_something(line)
from itertools import ifilter
for line in ifilter(lambda line: 'CONTENT_ITEM_ID' in line, urls):
do_something(line)