Python中字符串中至少出现三次的连续字符的正则表达式

2024-06-28 19:19:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我对tweet的文本预处理有问题

我想用以下方式替换字符串中至少重复三次的字符:

so        -----> so
loooooove -----> love
sweeeeeet -----> sweet

我所做的如下:

text = "this is so soooo sweeeeeeet. I loooove it!"
re.sub(r'([a-z])\1+', r'\1',text)

re.sub(r'(\w)(\1{3,})',r'\1',text)

这是从regex for repeating characters in a string in Python引用的

两者都返回相同的结果,如下所示:

'this is so so swet. I love it!'

任何建议都将不胜感激


Tags: 字符串textin文本resois方式
1条回答
网友
1楼 · 发布于 2024-06-28 19:19:37

正则表达式似乎完全按照您告诉它的方式执行—它用一个实例替换了多个连续字符。正则表达式不是问题,而是语言学的问题


原始单词中的字母数可能不明确:

A) Goooood morning, everyone!

B) Goooood, I hate mornings!

没有办法知道A)中的Goooood的原始单词是Good,而B)中的God是纯正则表达式,因为它取决于自然语言中的上下文


一种老套的方法是保留一本单词词典,只使用“压缩”重复字符时使用的最长单词(或者只使用Wiktor Stribiżew建议的拼写检查器),这种方法在很多情况下都有效,但在上面的示例中会失败

一种更复杂(但更难实现)的方法是使用某种句子预测算法来计算句子中最可能的原始单词


无论如何,这不是一个微不足道的问题

相关问题 更多 >