python - 无法使用 python 过滤器返回预期输出

标签 python python-3.x

我正在研究网页抓取。我得到了标题列表,现在我正在过滤掉不需要的东西。但是在过滤时我没有得到预期的输出。我找不到代码中的错误。

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/

相关文章:

python - 在 SQLAlchemy 数据库 session 之外访问表对象

python - Python 中的 subprocess.call 没有此类文件或目录错误

python - 为重复记录创建新的平均分数 [userid, itemid]

python - 如何定义多个需求文件?

python 从两个单独的列表中计数对,列表中没有唯一值(我认为集合不起作用)

python - 为什么我在尝试通过 python 插入数据 MongoDB 时遇到错误?

python - 关于如何根据当前 df 列创建新列的问题

python - 后面加*args可以使用默认参数吗?

python-3.x - Python 3 - 安装新模块时出现 WinError 87

python - python __getitem__()方法中LinkedList的实现