2017-12-16 2 views
-1

ich den folgenden Code verwende Preise von einer E-Commerce-Website zu bringen:Erste Schrägstriche und Buchstaben, während ich nur die Nummer will

response.css('div.price.regularPrice::text').extract() 

aber das folgende Ergebnis erhalten:

'\r\n\t\t\tDhs 5.00\r\n\t\t\t\t\t\t\t\t', 
'\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t', 

ich nicht tun will die Schrägstriche und Buchstaben und nur die Zahl 5. Wie bekomme ich das? nur die Zahlen

+0

Verwenden Sie den Button '{}', um den Code und die Ergebnisse zu formatieren. – furas

+0

Sie können 'strip()' verwenden, um Registerkarten zu entfernen und später Slicing zu verwenden – furas

Antwort

0

Verwendung Regex

\ d + regulären Ausdruck holen sollte es tun

2

Zuerst strip()"\t" Tabs entfernen können und tritt "\n".

data = ['\r\n\t\t\tDhs 5.00\r\n\t\t\t\t\t\t\t\t', 
     '\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t'] 

data = [item.strip() for item in data] 

und Sie erhalten

['Dhs 5.00', ''] 

Weiter Sie if verwenden können leere Elemente

data = [item for item in data if item] 

und Sie

erhalten überspringen
['Dhs 5.00'] 

Wenn Einzelteil immer die gleiche Struktur hat Dns XXX.00
dann können Sie [4:-3] Schneiden verwenden "Dhs " und ".00"

data = [item[4:-3] for item in data] 

und Sie

['5'] 

Sie haben nur So, jetzt bekommen zu entfernen, um das erste Element data[0] zu bekommen 5 zu bekommen.
Wenn Sie benötigen Sie Zeichenfolge "5" umwandeln kann 5 mit int()

result = int(data[0]) 

Sie können sogar alle

data = ['\r\n\t\t\tDhs 5.00\r\n\t\t\t\t\t\t\t\t', 
     '\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t'] 

data = [item.strip()[4:-3] for item in data if item.strip()] 

result = int(data[0]) 

in eine Zeile setzen auf Integer Wenn Sie immer nur das erste Element aus der Liste müssen dann Sie können es schreiben

data = ['\r\n\t\t\tDhs 5.00\r\n\t\t\t\t\t\t\t\t', 
     '\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t'] 

result = int(data[0].strip()[4:-3]) 
Verwandte Themen