列表中的字符串项:如何删除某些关键字?

String items in list: how to remove certain keywords?

我有一组如下所示的链接:

links = ['http://www.website.com/category/subcategory/1',
'http://www.website.com/category/subcategory/2',
'http://www.website.com/category/subcategory/3',...]

我想从这个列表中提取123等,并将提取的数据存储在subcategory_explicit中。它们存储为 str,我无法使用以下代码获取它们:

subcategory_explicit = [cat.get('subcategory') for cat in links if cat.get('subcategory') is not None]

我是否必须将数据类型从 str 更改为其他类型?获取和存储提取值的更好方法是什么?

subcategory_explicit = [i[i.find('subcategory'):] for i in links if 'subcategory' in i]

这通过切片使用子字符串,从 "subcategory" 中的 "s" 开始,直到字符串结束。通过将 len('subcategory') 添加到 find 的值,您可以排除 "subcategory" 并获得“/#”(其中 # 是任何数字)。

试试这个(使用 re 模块):

import re

links = [
    'http://www.website.com/category/subcategory/1',
    'http://www.website.com/category/subcategory/2',
    'http://www.website.com/category/subcategory/3']

d = "|".join(links)
# 'http://www.website.com/category/subcategory/1|http://www.website.com/category/subcategory/2|http://www.website.com/category/subcategory/3'

pattern = re.compile("/category/(?P<category_name>\w+)/\d+", re.I)
subcategory_explicit = pattern.findall(d)

print(subcategory_explicit)