2015-09-14 14 views
7

Attualmente sto affrontando il problema che ho una stringa di cui voglio estrarre solo il primo numero. Il mio primo passo è stato quello di estrarre i numeri dalla stringa.ricevendo solo il primo numero da String in Python

Headline = "redirectDetail('27184','2 -New-York-Explorer-Pass')" 
print (re.findall('\d+', headline)) 
Output is ['27184', '2'] 

In questo caso mi ha restituito due numeri ma voglio solo avere il primo "27184".

Quindi, ho provato con il seguente codice:

print (re.findall('/^[^\d]*(\d+)/', headline)) 

ma non funziona:

Output:[] 

Can you guys darmi una mano? Qualsiasi commento è apprezzato

+1

'>>> re.search (r '\ D +', Headline) .group (0) ' 27184'' – Kasramvd

+0

'print (re.findall (r '^ [^ \ d] * (\ d +)', titolo))' –

+0

Stai usando 'findall', che trova tutte le occorrenze. A proposito, le espressioni regolari Python non richiedono caratteri '/'. –

risposta

10

Basta usare re.search che si interrompe una volta trovata una corrispondenza.

re.search(r'\d+', headline).group() 

o

È necessario rimuovere l'attaccante slash presente nel vostro regex.

re.findall(r'^\D*(\d+)', headline) 
+0

Grande. Ha funzionato. Grazie –

1
re.search('[0-9]+', headline).group() 
2

soluzione senza espressione regolare (non necessariamente migliore):

import string 

no_digits = string.printable[10:] 

headline = "redirectDetail('27184','2 -New-York-Explorer-Pass')" 
trans = str.maketrans(no_digits, " "*len(no_digits)) 

print(headline.translate(trans).split()[0]) 
>>> 27184