Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python筛选/从列表中删除URL_Python_Url_List_Filter - Fatal编程技术网

Python筛选/从列表中删除URL

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

我有一个URL的文本文件,大约14000个。以下是几个例子:






我已经将文本文件加载到一个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)