我正在研究网页抓取。我得到了标题列表,现在我正在过滤掉不需要的东西。但是在过滤时我没有得到预期的输出。我找不到代码中的错误。
import re
def filter_header(item):
if(item):
if(item == 'Rank & Title'):
rank_title_split = re.split('[&]', item)
print(rank_title_split) # getting ['Rank','Title']
return rank_title_split
else:
print(item)
return item
imdb_header_list = [False, 'Rank & Title', 'IMDb Rating', 'Your Rating', False]
imdb_filtered_header_list = filter(filter_header,imdb_header_list)
print(list(imdb_filtered_header_list))
获取输出=
['Rank & Title', 'IMDb Rating', 'Your Rating']
我的预期输出=
[['Rank','Title'],'IMDb Rating', 'Your Rating']
最佳答案
对于解析“Rank & Title”
,不需要过滤器。您可以将 filter_header
应用于列表中的每个项目:
imdb_filtered_header_list = [filter_header(item) for item in imdb_header_list]
然后您可以过滤掉 False 值。
工作实现:
import re
def filter_header(item):
if(item == 'Rank & Title'):
rank_title_split = re.split('[&]', item)
return rank_title_split
return item
imdb_header_list = [False, 'Rank & Title', 'IMDb Rating', 'Your Rating', False]
imdb_filtered_header_list = [filter_header(item) for item in imdb_header_list]
imdb_filtered_header_list = list(filter(bool, imdb_filtered_header_list)) # remove False values
print(imdb_filtered_header_list)
输出:
[['Rank ', ' Title'], 'IMDb Rating', 'Your Rating']
关于python - 无法使用 python 过滤器返回预期输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55438319/