¿Cómo puedo reemplazar la primera aparición de un carácter en cada palabra?
Digamos que tengo esta cadena:
hello @jon i am @@here or @@@there and want some@thing in '@here"
# ^ ^^ ^^^ ^ ^
Y quiero eliminar el primero @
en cada palabra, para que termine teniendo una cadena final como esta:
hello jon i am @here or @@there and want something in 'here
# ^ ^ ^^ ^ ^
Solo para aclarar, los caracteres "@" siempre aparecen juntos en cada palabra, pero pueden estar al principio de la palabra o entre otros caracteres.
Logré eliminar el carácter "@" si aparece solo una vez usando una variación de la expresión regular que encontré en Eliminar subcadena cuando aparece una vez, pero no cuando dos veces seguidas en python , que usa una búsqueda anticipada negativa y una mirada negativa hacia atrás:
@(?!@)(?<!@@)
Ver la salida:
>>> s = "hello @jon i am @@here or @@@there and want some@thing in '@here"
>>> re.sub(r'@(?!@)(?<!@@)', '', s)
"hello jon i am @@here or @@@there and want something in 'here"
Entonces, el siguiente paso es reemplazar la "@" cuando ocurre más de una vez. Esto es fácil s.replace('@@', '@')
al eliminar la "@" de donde sea que ocurra nuevamente.
Sin embargo, me pregunto: ¿hay alguna manera de hacer este reemplazo de una sola vez?
@Hello@There
dónde @
no sería consecutiva?