我想摆脱文本字符串中重复的单词序列,所以我在Python中想出了这个正则表达式解决方案:
e = re.compile(r'(\w.+)(?=\1)',flags=re.DOTALL)
所以当:
text = 'Cats get wet in get wet in the rain'
结果似乎没问题:
re.sub(e,'', text)
'猫在雨中被淋湿'
但是如果
text = 'Rococo was replaced by the Neoclassic style.'
re.sub(e,'', text)
我得到了
' Roco被新古典主义风格所取代。'
这不好,因为"洛可可"已改为" Roco"。
所以我改变了正则表达式,以便只匹配连续重复的不同单词(用空格分隔):
e = re.compile(r'(\w.+ )(?=\1)',flags=re.DOTALL)
所以我得到了两个
text = 'Cats get wet in get wet in the rain'
re.sub(e,'', text)
'猫在雨中被淋湿'
和
text = 'Rococo was replaced by the Neoclassic style.'
re.sub(e,'', text)
'洛可可被新古典风格所取代。'
很好,似乎是我想要的正则表达式。但是我也有一些奇怪的行为:
让我们这样说:
text = 'Escobar bar established'
re.sub(e,'', text)
' Escobar成立了'
这个词" bar"在结果中缺少完全没有意图。
现在的问题是:
使用Python我想做什么是正确的解决方案,这意味着连续删除重复的单独单词序列,同时保持句子的其他部分安全无虞?
非常感谢你的帮助。