【问题标题】:Python3 filter/remove strings of a listPython3过滤/删除列表的字符串
【发布时间】:2020-09-09 10:04:35
【问题描述】:

我用我的爬虫抓取了一些数据和东西,现在我必须分析它们。

我得到了一个包含一些图片不同链接的列表,但我只想保存那些没有"/Thumbnails"的链接

pictures = ['Media/Shop/922180cruv.jpg', 'Media/Shop/922180cruvdet.jpg', 'Media/Shop/Thumbnails/922180cruvx320x240.jpg', 'Media/Shop/Thumbnails/922180cruvdetx320x240.jpg']

有没有办法说“如果字符串得到/Thumbnails”,从列表中删除所有? 我在单独的列中有一个包含 ~25000 个列表的 csv。

已经尝试过 remove() 和索引,但我的列表不同,所以第一个列表的索引不适合第二个列表

【问题讨论】:

  • pictures = [path in pictures if "/Thumbnails/" not in path]?

标签: python-3.x string list


【解决方案1】:

使用过滤列表理解:

pictures = ['Media/Shop/922180cruv.jpg', 'Media/Shop/922180cruvdet.jpg', 'Media/Shop/Thumbnails/922180cruvx320x240.jpg', 'Media/Shop/Thumbnails/922180cruvdetx320x240.jpg']

pictures = [p for p in pictures if not "/Thumbnails/" in p]

print(pictures)

打印:

['Media/Shop/922180cruv.jpg', 'Media/Shop/922180cruvdet.jpg']

【讨论】:

    【解决方案2】:

    您可以使用以下python的拆分和加入功能。

    pictures = ['Media/Shop/922180cruv.jpg', 'Media/Shop/922180cruvdet.jpg', 
                'Media/Shop/Thumbnails/922180cruvx320x240.jpg', 
                'Media/Shop/Thumbnails/922180cruvdetx320x240.jpg']
    pictures2= []
    for pic in pictures:
      if "Thumbnails" in pic:
        pic_list = pic.split("Thumbnails/")
        pic = "".join(pic_list) 
        print(pic)
        pictures2.append(pic)
      else:
        pictures2.append(pic)
    print(pictures2)
    

    输出

    ['Media/Shop/922180cruv.jpg', 'Media/Shop/922180cruvdet.jpg', 'Media/Shop/922180cruvx320x240.jpg', 'Media/Shop/922180cruvdetx320x240.jpg']
    

    【讨论】:

    • 您的解决方案只删除了“/Thumbnails”部分,这不是我要求的,但我感谢您的努力,先生!
    【解决方案3】:

    您可以遍历列表并检查每个字符串是否包含子字符串/Thumbnail

    result   = []
    pictures = ['Media/Shop/922180cruv.jpg', 'Media/Shop/922180cruvdet.jpg', 
                'Media/Shop/Thumbnails/922180cruvx320x240.jpg', 
                'Media/Shop/Thumbnails/922180cruvdetx320x240.jpg']
    
    
    for picture in pictures:
        if picture.find('/Thumbnails') == -1:
            result.append(picture)
    

    输出:

    ['Media/Shop/922180cruv.jpg', 'Media/Shop/922180cruvdet.jpg']
    

    演示:https://onlinegdb.com/rkAo1EL4w

    【讨论】:

      猜你喜欢
      • 2019-02-17
      • 2022-01-16
      • 2011-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-18
      • 1970-01-01
      • 2012-06-26
      相关资源
      最近更新 更多