Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

185
Vistas
¿Cómo puedo reemplazar la primera aparición de un carácter en cada palabra?

¿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 la primera @ en cada palabra, para terminar teniendo una cadena final como esta:

 hello jon i am @here or @@there and want something in 'here # ^ ^ ^^ ^ ^

Solo como aclaración, los caracteres "@" siempre aparecen juntos en cada palabra, pero pueden estar al principio de la palabra o entre otros caracteres.

Me las arreglé para 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 ocurre dos veces seguidas en python , que usa una mirada hacia adelante negativa y una mirada atrás negativa:

 @(?!@)(?<!@@)

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 aparece más de una vez. Esto es fácil haciendo s.replace('@@', '@') para eliminar la "@" de donde sea que aparezca nuevamente.

Sin embargo, me pregunto: ¿hay alguna manera de hacer este reemplazo de una sola vez?

over 4 years ago · Santiago Trujillo
6 Respuestas
Responde la pregunta

0

MANIFESTACIÓN

 (?<!@)@

Puedes probar esto. Ver demostración.

over 4 years ago · Santiago Trujillo Denunciar

0

¿Qué tal usar replace('@', '', 1) en una expresión de generador?

 string = 'hello @jon i am @@here or @@@there and want some@thing in "@here"' result = ' '.join(s.replace('@', '', 1) for s in string.split(' ')) # output: hello jon i am @here or @@there and want something in "here"

El valor int de 1 es el argumento de count opcional.

str.replace(old, new[, count])

Devuelve una copia de la cadena con todas las apariciones de la subcadena antigua reemplazada por nueva . Si se proporciona el argumento opcional recuento , solo se reemplazan las primeras ocurrencias de recuento .

over 4 years ago · Santiago Trujillo Denunciar

0

Haría un reemplazo de expresiones regulares en el siguiente patrón:

 @(@*)

Y luego simplemente reemplace con el primer grupo de captura, que son todos los símbolos @ continuos, menos uno.

Esto debería capturar cada @ que aparece al comienzo de cada palabra, ya sea esa palabra al principio, en el medio o al final de la cadena.

 inp = "hello @jon i am @@here or @@@there and want some@thing in '@here" out = re.sub(r"@(@*)", '\\1', inp) print(out)

Esto imprime:

 hello jon i am @here or @@there and want something in 'here
over 4 years ago · Santiago Trujillo Denunciar

0

Estaba reflexionando para los casos, qué pasa si solo el último carácter es @ y no desea eliminarlo, o si tiene caracteres de inicio permitidos específicos, se le ocurrió esto:

 >>> ' '.join([s_.replace('@', '', 1) if s_[0] in ["'", "@"] else s_ for s_ in s.split()]) "hello jon i am @here or @@there and want some@thing in 'here"

O suponga que desea reemplazar @ solo si está en los primeros n caracteres

 >>> ' '.join([s_.replace('@', '', 1) if s_.find('@') in range(2) else s_ for s_ in s.split()]) "hello jon i am @here or @@there and want some@thing in 'here"
over 4 years ago · Santiago Trujillo Denunciar

0

Puedes usar re.sub así:

 import re s = "hello @jon i am @@here or @@@there and want some@thing in '@here" s = re.sub('@(\w)', r'\1', s) print(s)

Eso dará como resultado:

 "hello jon i am @here or @@there and want something in 'here"

Y aquí hay una prueba de concepto:

 >>> import re >>> s = "hello @jon i am @@here or @@@there and want some@thing in '@here" >>> re.sub('@(\w)', r'\1', s) "hello jon i am @here or @@there and want something in 'here" >>>
over 4 years ago · Santiago Trujillo Denunciar

0

# Python3 program to remove the @ from String def ExceptAtTheRate(string): # Split the String based on the space arrOfStr = string.split() # String to store the resultant String res = "" # Traverse the words and # remove the first @ From every word. for a in arrOfStr: if(a[0]=='@'): res += a[1:len(a)] + " " else: res += a[0:len(a)] + " " return res # Driver code string = "hello @jon i am @@here or @@@there and want some@thing in '@here" print(ExceptAtTheRate(string))

Producción:

ingrese la descripción de la imagen aquí

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda