每次按不同对数将列表中的元素分组在一起

时间:2019-09-16 06:48:52

标签: python list beautifulsoup grouping

我有以下问题要问。 我有一个bs4.element.Tag列表,例如[[tag1,tag2,tag3],[tag4,tag5],[tag6],[tag7,tag8,tag9,tag10]]。因此,每个子列表都包含来自不同电影的演员的姓名。因此,第一个子列表包含三个演员,第二个两个演员,依此类推。

我要做的是通过在每个子列表的每个元素上调用函数.text来删除bs4.element.Tag。然后,将结果附加到一个新列表中,例如:[str1,str2,str3,str4,str5,str6,str7,str8,str9,str10]。虽然这不是我想要的结果。我希望将新列表中的演员与原始列表中的演员进行分组。

因此,理想的结果应该是:[[str1,str2,str3],[str4,str5],[str6],[str7,str8,str9,str10]] 其中str =每个演员的字符串名称。

您知道如何实现吗?

我的示例(以下图片):

list of bs4.element.tags

list of actor names

2 个答案:

答案 0 :(得分:0)

很难完全不看代码而很难做,但是您将要遍历element标签,将每个元素的内容提取到列表中,然后将其附加到最终列表中。像这样:

final_list = []
for tag in tags_list:
    actors = tag.find_all('a')
    actors_list = [ x.text.strip() for x in actors ]
    final_list.append(actors_list)

答案 1 :(得分:0)

您可以按照@Ezer K的建议进行列表理解。但是我个人更喜欢map函数。

actor_list = []
for tags in tag_list:
    actor_list.append(list(map(lambda x: x.text, tags)))