为什么只有在第二次调用之后,'ana‘才被替换为'banana’?请帮忙:
prop="ana anastasia ana ana re ana ana mere ana"
prop=" "+prop+" "
s = 'ana'
t = 'banana'
prop=prop.replace(" "+s+" "," "+t+" ")
print(prop) # banana anastasia banana ana re banana ana mere banana
prop=prop.replace(" "+s+" "," "+t+" ")
print(prop) # banana anastasia banana banana re banana banana mere banana发布于 2021-11-05 10:30:21
在您的第一次评估中,_ana_ana_被读作_ana_+ana_ (NB为清晰起见,请使用空格作为下划线(_) )。
只有第一个符合要替换的条件,一旦第一个_ana_字符串被使用,第二个就会丢失一个空格。
您需要替换的数量与由单个空格隔开的ana单词数量一样多。
一种解决方法是使用\b作为分隔符的正则表达式:
prop="ana anastasia ana ana re ana ana mere ana"
import re
re.sub(rf'\b{s}\b', t, prop)输出:'banana anastasia banana banana re banana banana mere banana'
发布于 2021-11-05 10:39:07
我用_来代表太空。在这里,当您将"ana“替换为"banana”时,整个"_ana_"将被替换。替换后,甚至连空格都被替换了,所以光标会直接跳到next ana的"a“,所以这个不会被替换。在第二次调用之后,我们有了"_ana_",所以这一次它会再次将它替换为banana,你会得到你想要的结果。这里的要点是:
替换后,光标将直接跳到下一个ana的"a“
相反,您可以使用split()函数检查每个单词,如果是=="ana“,则将其更改为"banana”
prop="ana anastasia ana ana re ana ana mere ana"
s1=""
for i in prop.split():
if i=="ana":
s1+="banana"+" "
else:
s1+=i+" "
print(s1) # banana anastasia banana banana re banana banana mere banana https://stackoverflow.com/questions/69851817
复制相似问题