如何解决仅替换匹配的单词
有一个字符串,
'ANNA BOUGHT AN APPLE AND A BANANA'
并希望替换“ AN”并获取
'ANNA BOUGHT X APPLE AND A BANANA'
但简单的代码:
text.replace('AN','X')
返回:
XNA BOUGHT X APPLE XD A BXXA
如何使其工作?
解决方法
此代码适用于每种情况(字符串的开头/中间/结尾,带有或不带有标点符号):
import re
your_string = 'AN ANNA BOUGHT AN APPLE AND A BANANA AN'
replaced_strig = re.sub(r'\bAN\b','X',your_string)
,
如果要搜索单词AN,则应在空格处使用text.replace(' AN ',' X ')
。这样,您将只替换单词并避免出现其他情况
让string = ANNA BOUGHT AN APPLE AND A BANANA
然后myList = string.split(' ')
它将返回myList = ['ANNA','BOUGHT','AN','APPLE','AND','A','BANANA']
然后您可以执行以下操作
myList[myList.index('AN')] = 'X'
如果存在多个“ AN”,我们可以执行以下操作
for i in range(len(myList)):
if myList[i] == 'AN':
myList[i] = 'X'
,
您可以使用正则表达式-注意对单词边界使用SHMEM
end
SHMEM
end
...
:
\b
或没有正则表达式的解决方案(不会保留单词之间的确切空白量,并且如果也有标点符号,可能不会完全相等):
import re
line = 'ANNA BOUGHT AN APPLE AND A BANANA'
print(re.sub(r'\bAN\b',line))
,
正则表达式是进行这种操作甚至更复杂操作的最佳方法,这有点令人生畏,但是一旦完成,它就会变得非常简单
import re
text = 'ANNA BOUGHT AN APPLE AND A BANANA'
pattern = r'(AN)'
new = re.sub(pattern,text)
print(new)
,
正则表达式就是这样-先行后行
import re
line = 'AN ANNA BOUGHT AN APPLE AND A BANANA AN. AN'
pattern='((?<=^)|(?<=\W))AN(?=\W|$)'
p = re.compile(pattern)
print(p.sub('X',line))
输入:ANNA将一个APPLE和BANANA AN进行了购物。 AN
结果:X ANNA BOUGHT X APPLE和BANANA X. X
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。