从单词中删除重复的字符

8 python nlp nltk

我想知道将"haaaaapppppyyy"转换为"haappyy"之类的最佳方式是什么.

基本上,在解析俚语时,人们有时会重复字符以增加重点.

我想知道最好的方法是什么?使用set()不起作用,因为字母的顺序显然很重要.

有任何想法吗?我正在使用Python + nltk.

How*_*ard 26

它可以使用正则表达式完成:

>>> import re
>>> re.sub(r'(.)\1+', r'\1\1', "haaaaapppppyyy")     
'haappyy'
Run Code Online (Sandbox Code Playgroud)

(.)\1+通过两倍的字符重新填充任何字符(.)后跟一个或多个相同字符(因为backref \1必须相同).

  • @larsmans实际上你的速度几乎是我的两倍. (4认同)
  • 我会使用`r'(.)\ 1 {2,}'`而不是单独使用双倍(现在你只是用自己替换它们).这应该给你另一个加速. (4认同)

Fre*_*Foo 7

您可以使用以下方法压缩多次出现的字母itertools.groupby:

>>> ''.join(c for c, _ in groupby("haaaaapppppyyy"))
'hapy'
Run Code Online (Sandbox Code Playgroud)

同样,你可以haappyygroupby

>>> ''.join(''.join(s)[:2] for _, s in groupby("haaaaapppppyyy"))
'haappyy'
Run Code Online (Sandbox Code Playgroud)