Bar*_*ald 6 python replace python-3.x
我知道您可以链接 .replace() 方法来进行多个子字符串替换。
但是当我这样做时有一个问题:
phrase = "AppleBananaCarrot"
print(phrase.replace("Banana","Apple").replace("Apple","Banana"))
Run Code Online (Sandbox Code Playgroud)
在这里,我想让 Banana 和 Apple 交换位置,这样就打印出:BananaAppleCarrot
相反,它打印:BananaBananaCarrot
换句话说:我不想再次替换替换子字符串。我认为解决这个问题的唯一方法是是否有一种方法可以同时使用 .replace() 方法而不是随后使用。有谁知道该怎么做或类似的事情?
我尝试在 stackoverflow 上查找,但问题只是询问如何更有效地进行后续操作。我想同时做。我找不到相关问题。
我们可以在这里尝试的一个技巧是使用re.sub回调函数:
import re
phrase = "AppleBananaCarrot"
output = re.sub(r'(?:apple|banana)', lambda m: 'Apple' if m.group().lower() == 'banana' else 'Banana', phrase, flags=re.I)
print(output) # BananaAppleCarrot
Run Code Online (Sandbox Code Playgroud)
这里的技巧是对字符串进行一次传递并使用逻辑进行交换Apple,Banana反之亦然。请注意,我们可以尝试进行三步替换Apple -> (some other string) -> Banana,但这种方法的问题是,这个中间字符串可能已经存在于输入中。
| 归档时间: |
|
| 查看次数: |
167 次 |
| 最近记录: |