Как я могу заменить первое вхождение символа в каждом слове?
Скажем, у меня есть эта строка:
hello @jon i am @@here or @@@there and want some@thing in '@here"
# ^ ^^ ^^^ ^ ^
И я хочу удалить первое @
в каждом слово, так что я получаю конечную строку, подобную этой:
hello jon i am @here or @@there and want something in 'here
# ^ ^ ^^ ^ ^
Просто для пояснения, символы "@" всегда появляются вместе в каждом слове, но могут быть в начале слова или между другими символов.
Мне удалось удалить символ "@", если он встречается только один раз, с помощью варианта регулярного выражения, обнаруженного в Удалить подстроку, когда это происходит один раз, но не дважды в строке в python, который использует отрицательный взгляд вперед и отрицательный взгляд назад:
@(?!@)(?<!@@)
См. Вывод:
>>> 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"
Таким образом, следующим шагом является замена "@", когда это происходит не раз. Это легко сделать, выполнив s.replace('@@', '@')
, чтобы удалить «@», где бы он ни возникал снова.
Однако мне интересно: есть ли способ сделать эту замену за один выстрел?