2016-04-24 24 views
0

ich verschiedene Produkttitel haben, von dem ich Produktmenge extrahiert werden soll, zum Beispiel:Python - Extrahieren von Elementen aus der Liste

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" 

ich es auf eine Liste von title.split umwandeln kann (“"). Was ist ein einfacher Weg, die Menge zu extrahieren (d. H. "45 g" im ersten Beispiel, "130-200 g" im zweiten Beispiel) und sie sofort aus dem Titel zu entfernen? Ich meine, ein Verfahren, das flexibel genug ist, Beträge in verschiedenen Positionen des Titels (einmal in der Mitte, ein anderes Mal am Ende etc.)

Das Ergebnis sollte so aussehen platziert zu handhaben:

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" 

Antwort

0

Sie können den Index der "Gramm" -Einheit finden und dann damit arbeiten. Die Wörter, die der Einheit unmittelbar vorangehen, sind Teil der Menge (Fehlerprüfung entfällt, Sie sollten sich entscheiden, was zu tun ist, wenn g in der Eingabezeichenfolge nicht vorhanden ist oder wenn es das erste Wort in der Eingabezeichenfolge ist oder wenn ist mehr als eine 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

Sie könnten eine Regex verwenden, so dass:

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