这看起来应该是直截了当的,但事实并非如此,我想在python中实现字符串替换,要替换的字符串可以是unigrams或n-gram,但我不想替换包含在其中的字符串字。
例如:
x='hello world'
x.replace('llo','ll)
返回:
'hell world'
但我不希望这种情况发生。
在空格上拆分字符串适用于个别单词(unigrams),但我也想替换n-gram
这样:
'this world is a happy place to be'
转换为:
'this world is a miserable cesspit to be'
并且在空格上拆分不起作用。
Python3中是否有内置函数允许我这样做?
我能做到:
if len(new_string.split(' '))>1:
x.replace(old_string,new_string)
else:
x_array=x.split(' ')
x_array=[new_string if y==old_string else y for y in x_array]
x=' '.join(x_array)
答案 0 :(得分:0)
你可以这样做:
import re
re_search = '(?P<pre>[^ ])llo(?P<post>[^ ])'
re_replace = '\g<pre>ll\g<post>'
print(re.sub(re_search, re_replace, 'hello world'))
print(re.sub(re_search, re_replace, 'helloworld'))
输出:
hello world
hellworld
请注意您需要再次添加pre
和post
。
现在我看到评论...... \b
可能会更好。