Eliminar caracteres no deseados de una cadena en Python

Tengo algunas cadenas que quiero borrar algunos caracteres no deseados de ellos. Por ejemplo: Adam'sApple ----> AdamsApple . (No distingue mayúsculas y minúsculas) ¿Puede alguien ayudarme? Necesito la forma más rápida de hacerlo, porque tengo un par de millones de registros que deben ser pulidos. Gracias

Una forma simple:

 >>> s = "Adam'sApple" >>> x = s.replace("'", "") >>> print x 'AdamsApple' 

… o eche un vistazo a las sustituciones de expresiones regulares .

Se eliminan todos los caracteres del segundo argumento del método de traducción :

 >>> "Adam's Apple!".translate(None,"'!") 'Adams Apple' 

NOTA: la traducción requiere Python 2.6 o posterior para usar Ninguno para el primer argumento, que de lo contrario debe ser una cadena de traducción de longitud 256. string.maketrans (”, ”) se puede usar en lugar de Ninguno para versiones anteriores a la 2.6.

Tratar:

 "Adam'sApple".replace("'", '') 

Un paso más allá, para reemplazar múltiples personajes por nada:

 import re print re.sub(r'''['"x]''', '', '''a'"xb''') 

Rendimientos:

 ab 

Aquí hay una función que elimina todos los caracteres ascii irritantes, la única excepción es “&” que se reemplaza con “y”. Lo uso para controlar un sistema de archivos y asegurarme de que todos los archivos se adhieran al esquema de nombres de archivos que insisto en que todos usen.

 def cleanString(incomingString): newstring = incomingString newstring = newstring.replace("!","") newstring = newstring.replace("@","") newstring = newstring.replace("#","") newstring = newstring.replace("$","") newstring = newstring.replace("%","") newstring = newstring.replace("^","") newstring = newstring.replace("&","and") newstring = newstring.replace("*","") newstring = newstring.replace("(","") newstring = newstring.replace(")","") newstring = newstring.replace("+","") newstring = newstring.replace("=","") newstring = newstring.replace("?","") newstring = newstring.replace("\'","") newstring = newstring.replace("\"","") newstring = newstring.replace("{","") newstring = newstring.replace("}","") newstring = newstring.replace("[","") newstring = newstring.replace("]","") newstring = newstring.replace("<","") newstring = newstring.replace(">","") newstring = newstring.replace("~","") newstring = newstring.replace("`","") newstring = newstring.replace(":","") newstring = newstring.replace(";","") newstring = newstring.replace("|","") newstring = newstring.replace("\\","") newstring = newstring.replace("/","") return newstring 
 str.replace("'",""); 

Como se ha señalado varias veces ahora, tiene que usar replace o expresiones regulares (aunque lo más probable es que no necesite expresiones regulares), pero si también debe asegurarse de que la cadena resultante sea ASCII simple (no contiene personajes funky como é, ò, µ, æ o φ), finalmente podrías hacer

 >>> u'(like é, ò, µ, æ or φ)'.encode('ascii', 'ignore') '(like , , , or )' 

Una alternativa que incluirá una cadena y una matriz de caracteres no deseados

  # function that removes unwanted signs from str #Pass the string to the function and an array ofunwanted chars def removeSigns(str,arrayOfChars): charFound = False newstr = "" for letter in str: for char in arrayOfChars: if letter == char: charFound = True break if charFound == False: newstr += letter charFound = False return newstr 

Digamos que tenemos la siguiente lista:

 states = [' Alabama ', 'Georgia!', 'Georgia', 'georgia', 'south carolina##', 'West virginia?'] 

Ahora vamos a definir una función clean_strings()

 import re def clean_strings(strings): result = [] for value in strings: value = value.strip() value = re.sub('[!#?]', '', value) value = value.title() result.append(value) return result 

Cuando llamamos a la función clean_strings(states)

El resultado se verá como:

 ['Alabama', 'Georgia', 'Georgia', 'Georgia', 'Florida', 'South Carolina', 'West Virginia']