2016-04-24 162 views
0

我得從我要提取產品的量不同商品標題,例如:Python的 - 從列表中提取元素

title = "Prażynki Roasty Ribs Lorenz, 45 g BBQ Hot&Spicy" 

title = "Precelki Chrupkie Paluszki słone ; 49 + Chrupiące kulki gratis Lajkonik, 130-200 g" 

我可以title.split將其轉換爲一個列表(」「 )。提取數量的簡單方法是什麼(即第一個例子中的「45 g」,第二個中的「130-200 g」),並將其從標題中一次性刪除?我的意思是一個方法,該方法是足夠的靈活性以處理放置在標題的不同位置的量(在中間的一個時刻,另一個時間末等)

結果應該是這樣的:

name = "Prażynki Roasty Ribs Lorenz, BBQ Hot&Spicy" 
amount = "45 g" 

name = "Precelki Chrupkie Paluszki słone ; 49 + Chrupiące kulki gratis Lajkonik" 
amount = "130-200 g" 

回答

0

您可以找到「克」單位的索引,然後使用它。緊跟在單元之前的單詞是數量的一部分(省略錯誤檢查,如果輸入字符串中沒有g,或者它是輸入字符串中的第一個單詞,或者如果存在的話,您應該下決定該怎麼做是不止一個g)。

def f(s): 
    words = s.split() 
    unitIdx = words.index('g') 
    name = words[:unitIdx - 1] + words[unitIdx + 1:] 
    amount = words[unitIdx - 1] + ' ' + words[unitIdx] 
    return ' '.join(name), amount 

# Prints ('Prazynki Roasty Ribs Lorenz, BBQ Hot&Spicy', '45 g') 
print f("Prazynki Roasty Ribs Lorenz, 45 g BBQ Hot&Spicy") 

# Prints ('Precelki Chrupkie Paluszki stone ; 49 + Chrupiqce kulki gratis Lajkonik,', '130-200 g') 
print f("Precelki Chrupkie Paluszki stone ; 49 + Chrupiqce kulki gratis Lajkonik, 130-200 g") 
0

您可以使用這樣的正則表達式:

re.search(r"\b(\d+(?:\-\d+)?) g\b", title)