2016-08-05 19 views
0

Ich habe eine Liste mit variabler name:Ausgabe mit Split-Funktion

name = ['Ny-site-1-145237890-service'] 

Ich mag diese Liste in einer Art und Weise teilen, so kann ich name = ['Ny-site-1'] bekommen. Um dies zu tun, ich den folgenden Code verwenden:

import re 
name = ['Ny-site-1-145237890-service'] 
site_name = re.split('(-[0-9]-service)')[0] 

Aber der obige Code wird mich nicht den Ausgang ich suche. Wie bekomme ich das gewünschte Ergebnis?

Antwort

2

Zunächst einmal re.split() erfordert 2 Argumente, Sie bieten eine einzige.

Auch Sie müssen + quantifier hinzufügen (bedeutet "1 oder mehr") für die [0-9] Zeichensatz:

>>> import re 
>>> 
>>> name = ['Ny-site-1-145237890-service'] 
>>> re.split(r'-[0-9]+-service', name[0])[0] 
'Ny-site-1' 

Ich möchte auch hinzufügen, das maxsplit=1 Argument unnötige Spaltungen zu vermeiden:

>>> re.split(r'-[0-9]+-service', name[0], maxsplit=1)[0] 
'Ny-site-1' 

Sie können auch ein Ende eines Strings Prüfung, um den Ausdruck zu machen mehr hinzufügen zuverlässig:

>>> re.sub(r'-[0-9]+-service$', '', name[0]) 
'Ny-site-1' 
+0

@ Alecxe Vielen Dank für Ihre Vorschläge! In re.split habe ich 2 Argumente übergeben aber vergessen zu erwähnen. Es war ein Tippfehler. Aber Danke für die Korrektur! – dharpatel

+0

@dharpatel Okay, bitte sehen Sie, ob die Antwort akzeptiert zu werden verdient. Vielen Dank. – alecxe

0

Versuchen Hinzufügen eines + in Ihrem regex mehrere Nummern übereinstimmen:

-[0-9]+-service$ 

Und, können Sie es auch mit re.sub() lösen.

name = 'Ny-site-1-145237890-service' 
site_name = re.split('(-[0-9]+-service)', name)[0] 

Wenn Sie ein Array verwenden möchten, Ihren Namen zu speichern (s) können Sie

name = ['Ny-site-1-145237890-service'] 
site_name = re.split('(-[0-9]+-service)', name[0])[0] 

verwenden Wenn Sie mehrere Namen haben, und Sie wollen, dass sie alle drucken, können Sie verwenden

for i in names: 
    print(re.split('(-[0-9]+-service)', i)[0]) 
+0

@ intbolstring für Ihre Vorschläge! – dharpatel