Como posso substituir a primeira ocorrência de um caractere em cada palavra?
Digamos que eu tenho esta string:
hello @jon i am @@here or @@@there and want some@thing in '@here"
# ^ ^^ ^^^ ^ ^
E eu quero remover a primeira @em cada palavra, para que eu tenha uma sequência final como esta:
hello jon i am @here or @@there and want something in 'here
# ^ ^ ^^ ^ ^
Apenas para esclarecimento, os caracteres "@" sempre aparecem juntos em todas as palavras, mas podem estar no início da palavra ou entre outros caracteres.
Eu consegui remover o caractere "@" se ele ocorrer apenas uma vez, usando uma variação do regex que encontrei em Excluir substring quando ocorre uma vez, mas não quando duas vezes seguidas em python , que usa um lookahead negativo e um lookback negativo:
@(?!@)(?<!@@)
Veja a saída:
>>> 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"
Portanto, o próximo passo é substituir o "@" quando ocorrer mais de uma vez. Isso é fácil, s.replace('@@', '@')removendo o "@" de onde ele ocorre novamente.
No entanto, eu me pergunto: existe uma maneira de fazer essa substituição de uma só vez?
@Hello@Thereonde @não seria consecutivo?
