【问题标题】:Python iterate over first elements of a list except empty elements [duplicate]Python迭代列表的第一个元素,除了空元素[重复]
【发布时间】:2016-09-21 08:17:36
【问题描述】:

我已经抓取了一个网站并检索了说明主题作者的部分。提取作者后,我有一个字符串列表:

authorlist=[]
for post in topicsection: 
    authorlist.append(re.findall(r'<a href="/[Mm]ember.*?">(.*?)</a>', 
post))

>>>> [['author1'],['author2'],['author3']]

但是,我想把它变成一个字符串列表。因此,我遍历了作者列表并将每个列表的第一个 [0] 元素附加到作者列表中。有时文本中会出现一个空列表,这会导致错误。因此,我想使用 try-except 命令,其中将忽略空列表。

如何告诉 Python 提取每个列表的第一个元素,但如果有一个空列表则继续循环?我尝试了以下方法,其中异常部分不起作用:

try:
    authorlist = [lijst[0] for lijst in authorlist]
except IndexError:
    pass

提前谢谢你!

【问题讨论】:

    标签: python list loops list-comprehension empty-list


    【解决方案1】:

    您可以在列表理解中包含条件语句

    authorlist = [lijst[0] for lijst in authorlist if lijst]
    

    【讨论】:

      【解决方案2】:

      尝试在列表推导中添加过滤条件:

      authorlist = [lijst[0] for lijst in authorlist if len(lijst) > 0]
      

      【讨论】:

      • 这确实有效,非常感谢!
      【解决方案3】:
      authorlist = [lijst[0] for lijst in authorlist if lijst]
      

      您应该检查作者列表是否存在。希望这会有所帮助。

      【讨论】:

        猜你喜欢
        • 2013-01-23
        • 1970-01-01
        • 2015-01-17
        • 2018-12-28
        • 1970-01-01
        • 1970-01-01
        • 2018-06-04
        • 2019-01-28
        • 2015-07-26
        相关资源
        最近更新 更多