我想知道将"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
必须相同).
您可以使用以下方法压缩多次出现的字母itertools.groupby
:
>>> ''.join(c for c, _ in groupby("haaaaapppppyyy"))
'hapy'
Run Code Online (Sandbox Code Playgroud)
同样,你可以haappyy
从groupby
用
>>> ''.join(''.join(s)[:2] for _, s in groupby("haaaaapppppyyy"))
'haappyy'
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
12435 次 |
最近记录: |