una separar por palabras palabra letras funcion especiales eliminar contar comparar caracteres caracter cadenas cadena python string string-formatting built-in

python - separar - Eliminar todas las ocurrencias de varios caracteres de una cadena



separar palabra en letras python (3)

¿Existe una forma pitónica de hacer lo que hace el método str.strip() , excepto por todas las ocurrencias, no solo aquellas al principio y al final de una cadena?

Ejemplo:

>> ''::2012-05-14 18:10:20.856000::''.strip('' -.:'') >> ''2012-05-14 18:10:20.856000''

quiero

>> ''::2012-05-14 18:10:20.856000::''.crazy_function('' -.:'') >> ''20120514181020856000''

¿Python me proporciona un crazy_function ???

Fácilmente podría hacerlo programáticamente, pero quiero saber si hay una función para eso. No se pudo encontrar uno. Gracias por tu ayuda.


No. No creo que haya una incorporada.

Lo haría de esta manera:

>>> s = ''::2012-05-14 18:10:20.856000::'' >>> >>> ''''.join(x for x in s if x not in '' -.:'') ''20120514181020856000'' >>>


Podrías hacerlo fácilmente con re.sub

>>> import re >>> re.sub(r"[ -.:]", r"", "''::2012-05-14 18:10:20.856000::''") ''20120514181020856000'' >>>


Utilice la función de translate para eliminar los caracteres no deseados:

>>> ''::2012-05-14 18:10:20.856000::''.translate(None, '' -.:'') ''20120514181020856000''

Asegúrese de que su cadena sea de tipo str y no unicode , ya que los parámetros de la función no serán los mismos. Para Unicode, use la siguiente sintaxis; consiste en construir el dict de los ordinales de Unicode a partir de los caracteres para eliminarlos y asignarlos a None :

>>> u''::2012-05-14 18:10:20.856000::''.translate({ord(k):None for k in u'' -.:''}) u''20120514181020856000''

Algunos tiempos para la comparación de rendimiento con re :

>>> timeit.timeit("""re.sub(r"[ -.:]", r"", "''::2012-05-14 18:10:20.856000::''")""","import re") 7.352270301875713 >>> timeit.timeit("""''::2012-05-14 18:10:20.856000::''.translate(None, '' -.:'')""") 0.5894893344550951