2010-11-22 16 views
23

Estoy construyendo un sitio web con Python/Django. Los usuarios envían etiquetas. Cada etiqueta puede contener varias palabras. Cada etiqueta tiene un número de identificación. Quiero asegurarme de que las etiquetas que tienen el formato ligeramente diferente todavía se reconozcan como la misma etiqueta.Python/Django: ¿Cómo eliminar espacios y pestañas extra blancos de una cadena?

Por ejemplo, si un usuario envió la etiqueta "guitarra eléctrica" ​​y la otra presentó "guitarra eléctrica  " (2 espacios en blanco entre las 2 palabras) quiero reconocer que son la misma etiqueta.

Cómo me retire todos los espacios y las pestañas blancas adicionales en este caso? Gracias.

Respuesta

51

Split, en cualquier espacio en blanco, y luego unirse en un solo espacio.

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

o newline = '' .join (oldline.split()) ... me tomó un minuto encontrarlo como novato. – Framester

+0

Tenga en cuenta que esto elimina cualquier espacio en blanco antes y después de la cadena – andychase

7

me gustaría utilizar el método de Django slugify, que condensa los espacios en un solo tablero y otras características útiles:

from django.template.defaultfilters import slugify 
+0

Entonces no tiene que preocuparse por cosas como el caso, tampoco. –

+0

Creo que slugify es la mejor solución exhaustiva, mientras que cosas como dividir y unir resuelven específicamente este problema. Me gusta dejarlo en manos de los desarrolladores de Django. –

1

"electric guitar".split() le dará ['electric', 'guitar']. Lo mismo ocurrirá con "electric \tguitar".

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

Podría haber muchos espacios en blanco, como a continuación:

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

Sólo hacer tarea simple como, el uso de reemplazar la función:

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

Ahora el outpur sería:

Thisistheexampleofhowtoremovespaces 

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

-1

Esta función elimina todo lo que no es dígito en una cadena. Lo uso en todo el lugar.

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 
Cuestiones relacionadas