Comment remplacer la première occurrence d'un caractère dans chaque mot?
Disons que j'ai cette chaîne:
hello @jon i am @@here or @@@there and want some@thing in '@here"
# ^ ^^ ^^^ ^ ^
Et je veux supprimer le premier @
de chaque mot, pour finir par avoir une chaîne finale comme celle-ci:
hello jon i am @here or @@there and want something in 'here
# ^ ^ ^^ ^ ^
Pour plus de précision, les caractères "@" apparaissent toujours ensemble dans chaque mot, mais peuvent être au début du mot ou entre d'autres caractères.
J'ai réussi à supprimer le caractère "@" s'il se produit une seule fois en utilisant une variation de l'expression régulière que j'ai trouvée dans la sous-chaîne Supprimer quand il se produit une fois, mais pas deux fois de suite en python , qui utilise un lookahead négatif et un lookbehind négatif:
@(?!@)(?<!@@)
Voir la sortie:
>>> 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"
La prochaine étape consiste donc à remplacer le "@" lorsqu'il se produit plusieurs fois. Ceci est facile en s.replace('@@', '@')
supprimant le "@" partout où il se reproduit.
Cependant, je me demande: existe-t-il un moyen de faire ce remplacement en une seule fois?
@Hello@There
où @
ne serait pas consécutive?