2015-09-28 65 views
0

我有一組鏈接,看起來像下面這樣:列表中的字符串項目:如何刪除某些關鍵字?

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改變我的數據類型到別的東西?什麼是獲取和存儲提取值的更好方法?

回答

1

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

這經由切片使用子串,起始於「子類別」的「S」,直到字符串的末尾。通過將len('subcategory')添加到find的值中,可以排除「子類別」並獲取「/#」(其中#是任意數字)。

+0

這是如何工作有一個以上的數字'subcategory'值?我現在正在運行它,對於像'10','11'和'12'這樣的'子類'值,它存儲'1','1','1'。 – blacksite

+0

它似乎爲我工作。這是代碼:'[i [i.find('subcategory')+ len('subcategory'):] for i in links]'。我輸入了一些2位數值並正確得到了它們。 ':'很重要! –

+0

是的,那個':'是我忘記的。謝謝你的幫助。 – blacksite

1

試試這個(使用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) 
相關問題