¿Cómo eliminar este \ xa0 de una cadena en python?

Tengo la siguiente cadena:

word = u'Buffalo,\xa0IL\xa060625' 

No quiero el “\ xa0” allí. ¿Cómo puedo deshacerme de él? La cadena que quiero es:

 word = 'Buffalo, IL 06025 

Si está seguro de que ese es el único carácter que no quiere, puede .replace :

 >>> word.replace(u'\xa0', ' ') u'Buffalo, IL 60625' 

Si necesita manejar todos los caracteres que no son ASCII, la encoding y el reemplazo de los caracteres incorrectos pueden ser un buen comienzo …

 >>> word.encode('ascii', 'replace') 'Buffalo,?IL?60625' 

La forma más robusta sería utilizar el módulo unidecode para convertir unidecode todos los caracteres que no son ASCII a su equivalente ASCII más cercano.

El carácter \xa0 (no \xa como dijiste) es un ESPACIO SIN RIESGOS , y el equivalente ASCII más cercano sería, por supuesto, un espacio regular.

 import unidecode word = unidecode.unidecode(word) 

No hay \xa allí. Si intentas poner eso en una cadena literal, obtendrás un error de syntax si tienes suerte o se tragará el siguiente bash de carácter si no lo eres, porque \x secuencias siempre tienen que ser seguido de dos dígitos hexadecimales.

Lo que tienes es \xa0 , que es una secuencia de escape para el carácter U + 00A0 , también conocido como “NO-BREAK SPACE”.

Creo que quieres reemplazarlos con espacios, pero lo que quieras hacer es bastante fácil de escribir:

 word.replace(u'\xa0', u' ') # replaced with space word.replace(u'\xa0', u'0') # closest to what you were literally asking for word.replace(u'\xa0', u'') # removed completely 

Puede usar fácilmente unicodedata para deshacerse de todos los \x... caracteres.

 from unicodedata import normalize normalize('NFKD', word) >>> 'Buffalo, IL 60625' 

Esto parece funcionar para deshacerse de los caracteres que no son ascii:

 fixedword = word.encode('ascii','ignore')