Her kelimedeki bir karakterin ilk oluşumunu nasıl değiştirebilirim?
Diyelim ki bu dizeye sahibim:
hello @jon i am @@here or @@@there and want some@thing in '@here"
# ^ ^^ ^^^ ^ ^
Ve ben @her kelimede ilk kaldırmak istiyorum , böylece böyle bir son dize sahip sonunda:
hello jon i am @here or @@there and want something in 'here
# ^ ^ ^^ ^ ^
Açıklığa kavuşturmak için, "@" karakterleri her kelimede hep birlikte görünür, ancak kelimenin başında veya diğer karakterler arasında olabilir.
Bir kez gerçekleştiğinde Alt dizeyi sil'de bulduğum regex'in bir varyasyonunu kullanarak yalnızca bir kez gerçekleşirse "@" karakterini kaldırmayı başardım , ancak python'da bir negatif iki kez ve negatif bir geri dönüş kullanan bir satırda iki kez değil :
@(?!@)(?<!@@)
Çıktıya bakın:
>>> 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"
Yani bir sonraki adım, birden fazla kez meydana geldiğinde "@" yerine geçmektir. Bu, s.replace('@@', '@')"@" karakterini tekrar bulunduğu yerden kaldırmak için kolaydır .
Ancak merak ediyorum: Bu değişikliği tek seferde yapmanın bir yolu var mı?
@Hello@Therenerede @olmaz?
