2010-11-22 27 views
23

Sto costruendo un sito web con Python/Django. Gli utenti inviano tag. Ogni tag può contenere più parole. Ogni tag ha un numero ID. Voglio assicurarmi che i tag formattati in modo leggermente diverso vengano ancora riconosciuti come lo stesso tag.Python/Django: come rimuovere spazi bianchi extra e tabulazioni da una stringa?

Ad esempio, se un utente ha inviato il tag "chitarra elettrica" ​​e l'altro inviato "chitarra elettrica  " (2 spazi bianchi tra le 2 parole) voglio essere in grado di riconoscere che sono lo stesso tag.

Come rimuovere tutti gli spazi bianchi e le schede in più in questo caso? Grazie.

risposta

51

Split su qualsiasi spazio bianco, quindi unire in un unico spazio.

' '.join(s.split()) 
+5

o newline = '' .join (oldline.split()) ... mi ci è voluto un minuto per scoprirlo come novellino. – Framester

+0

Si noti che ciò rimuove gli spazi bianchi prima e dopo la stringa – andychase

7

avrei usato il metodo di Django slugify, che condensa gli spazi in un unico cruscotto ed altre funzioni utili:

from django.template.defaultfilters import slugify 
+0

Quindi non è necessario preoccuparsi di cose come il caso, sia. –

+0

Penso che slugify sia la soluzione migliore, mentre le cose come la divisione e l'unione risolvono proprio questo problema. Mi piace lasciarlo agli sviluppatori di Django. –

1

"electric guitar".split() vi darà ['electric', 'guitar']. Così sarà "electric \tguitar".

20
>>> import re 
>>> re.sub(r'\s+', ' ', 'some test with  ugly whitespace') 
'some test with ugly whitespace' 
-9

Ci potrebbero essere molti spazi bianchi come di seguito:

var = "   This  is the example of how to remove spaces " 

Basta fare semplici compiti come, uso sostituire la funzione:

realVar = var.replace(" ",'') 

Ora l'outpur sarebbe:

Thisistheexampleofhowtoremovespaces 

Just Chill ......... :-)

-1

Questa funzione rimuove tutto ciò che non è una cifra in una stringa. Lo uso dappertutto.

def parseInt(string): 
    if isinstance(string, (str, int, unicode)): 
     try: 
      digit = int(''.join([x for x in string if x.isdigit() ])) 
     except ValueError: 
      return False 
     else: 
      return digit 
    else: 
     return False 
Problemi correlati