Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

184
Views
¿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 answers
Answer question

0

MANIFESTACIÓN

 (?<!@)@

Puedes probar esto. Ver demostración.

over 4 years ago · Santiago Trujillo Report

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 Report

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 Report

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!