Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

189
Visualizações
¿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 Respostas
Responde à pergunta

0

MANIFESTACIÓN

 (?<!@)@

Puedes probar esto. Ver demostración.

over 4 years ago · Santiago Trujillo Relatório

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 Relatório

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 Relatório

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda