¿Hay una manera pitonica de hacer lo que hace el método str.strip()
, excepto todas las ocurrencias, no solo las que están al principio y al final de una cadena?Eliminar todas las apariciones de varios caracteres 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'
¿El Python proporciona un built-in crazy_function
???
Podría hacerlo fácilmente por programación, pero quiero saber si hay un built-in para eso. No se pudo encontrar uno. Gracias por tu ayuda.
yo prefiero una solución incorporada como éste sobre la solución escrita por Nick Craig-Wood. Pero me pregunto: en términos de rendimiento, ¿qué hay mejor? Podría estar equivocado, pero esta función de 'traducir' probablemente hace uso de la funcionalidad de expresiones regulares. – Francisco
@Francisco: supongo que en realidad hay dos funciones de traducción diferentes. La versión 3-Arugment funciona con _byte sequences_, usa una tabla de traducción, que se ilumina rápidamente. La versión Unicode funciona en _strings_, reemplaza los caracteres uno por uno y en realidad es tan lenta como la expresión regular si no más lenta. Todavía usaría expresiones regulares para su problema, porque mezclar _strings_ y _byte sequences_ nunca es una buena idea, incluso en python2. – georg
@ thg435: En mi problema, específicamente, la versión de bytes está bien. Estoy creando códigos de identificación basados en str (datetime.datetime.now()) y agregando un pedazo adicional de cadena a él. Entonces, Unicode no es un problema para mí. – Francisco