Jak mogę zastąpić pierwsze wystąpienie znaku w każdym słowie?
Powiedz, że mam ten ciąg:
hello @jon i am @@here or @@@there and want some@thing in '@here"
# ^ ^^ ^^^ ^ ^
I chcę usunąć pierwszy @
z każdego słowa, aby w końcu uzyskać końcowy ciąg taki jak ten:
hello jon i am @here or @@there and want something in 'here
# ^ ^ ^^ ^ ^
Dla wyjaśnienia znaki „@” zawsze pojawiają się razem w każdym słowie, ale mogą znajdować się na początku słowa lub między innymi znakami.
Udało mi się usunąć znak „@”, jeśli występuje on tylko raz, używając odmiany wyrażenia regularnego znalezionego w opcji Usuń podciąg, gdy występuje on raz, ale nie raz, gdy dwa razy z rzędu w pythonie , który używa negatywnego spojrzenia przed i negatywnego spojrzenia:
@(?!@)(?<!@@)
Zobacz wynik:
>>> 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"
Kolejnym krokiem jest zastąpienie litery „@”, gdy występuje ona więcej niż jeden raz. Jest to łatwe, s.replace('@@', '@')
usuwając znak „@” z dowolnego miejsca, w którym występuje ponownie.
Zastanawiam się jednak: czy istnieje sposób, aby zrobić to zastąpienie jednym strzałem?
@Hello@There
gdzie @
nie byłoby następujących po sobie?