【问题标题】:Combine two lists for web scraping project为网页抓取项目合并两个列表
【发布时间】:2019-09-06 21:42:31
【问题描述】:

我有两个列表:一个是基本列表,其中一些是“换行符”符号 (\n),另一个是列表列表。

我想组合这些,将第二个列表中的元素插入到出现 \n 的第一个列表中,以便最终结果如下所示:

first_list = ['a','b','c',\n, 'd','e','f','g','h',\n]

second_list = [[1,2,3], [4,5,6]]

结合这两个列表得到:

combined_list = ['a','b','c',1,2,3,'d','e','f','g','h',4,5,6].

我不太清楚为什么,但我的示例中第一个列表中的所有 \n 都具有相同的索引位置。因此,当我尝试遍历两个列表以首先找到第一个 \n 的位置并在该点插入 [1,2,3] 时,它最终会在 \n 的所有位置插入 [1,2,3]出现。我试图在这里简化问题以使其更易于沟通,但最初的问题来自我正在从事的一个网络抓取项目,该项目旨在从 Linkedin 检索信息,这些列表中的元素是 Linkedin 用户的个人资料属性。也许这可以帮助解释为什么 \n 都具有相同的索引位置?

任何有关如何以上述方式正确组合这些列表的帮助/解释为什么 \n 具有相同的索引位置将不胜感激!如果我可以提供任何其他详细信息,请告诉我。谢谢。

【问题讨论】:

  • 您的代码块包含一些无效的 Python。如果您不介意,请将字符串用引号括起来。
  • 我不完全确定你在问什么。 list1list2 是输入,list3 是所需的输出吗?不管是不是这样,您还需要分享您尝试过但不起作用的代码,以及错误的结果是什么。
  • 你可以像这样写一个衬里list3 = list(filter(lambda x: x != '\n', list1)) + [x for sublist in list2 for x in sublist]
  • @Kaymal 成功了,谢谢!

标签: python list web-scraping


【解决方案1】:

我知道您提到 \n 值存在一些索引问题,但希望这能让您走上正确的轨道..它适用于您提供的简化示例数据(考虑到字母不正确,重新格式化为正确变量)

l1 = ['a','b','c','\n','d','e','f','g','h','\n']
l2 = [[1,2,3], [4,5,6]]

l3 = []
n_count = 0

for i,l in zip(range(len(l1)),l1):
    if l != '\n':
        l3.append(l)
    elif l == '\n':
        l3.extend(l2[n_count])
        n_count += 1


print(l3)

['a', 'b', 'c', 1, 2, 3, 'd', 'e', 'f', 'g', 'h', 4, 5, 6]

如果您能找出索引问题,这可能会帮助您进行细微的修改

【讨论】:

    【解决方案2】:

    我假设 List1 和/或 List2 可以继续。

    List2 中的列表数量需要大于或等于 List1 中的 '\n's。

    List1 = ['a','b','c', '\n', 'd','e','f','g','h', '\n']
    List2 = [[1,2,3], [4,5,6]]
    # wanted = [a,b,c,1,2,3,d,e,f,g,h,4,5,6]
    
    list3 = []
    counter = 0
    for val in List1:
        if val == '\n':
            [list3.append(elem) for elem in List2[counter]]
            counter += 1
        else:
            list3.append(val)
    print(list3)
    ['a', 'b', 'c', 1, 2, 3, 'd', 'e', 'f', 'g', 'h', 4, 5, 6]
    

    【讨论】:

      猜你喜欢
      • 2020-08-30
      • 1970-01-01
      • 2012-03-27
      • 1970-01-01
      • 1970-01-01
      • 2020-03-17
      • 1970-01-01
      • 2011-01-17
      • 2019-02-07
      相关资源
      最近更新 更多