我的弦乐是:“亲爱的,你好吗?”
我想看看这串字是不是拉长了。
拉长的意思是:如果单词中的字符数重复两次以上,例如,tooo不是拉长的,而是拉长的。
>>> import itertools
>>> my_str = 'soooo hiiiii whyyyy done'
>>> print [[g[0], sum(1 for _ in g[1])] for g in itertools.groupby(my_str)]
[['s', 1], ['o', 4], [' ', 1], ['h', 1], ['i', 5], [' ', 1], ['w', 1], ['h', 1],
['y', 4], [' ', 1], ['d', 1], ['o', 1], ['n', 1], ['e', 1]]
我想展示的是苏奥,阿雷伊和尤乌都被拉长了。我做了个人字符计数,但我想检查每一个字,看看它是否拉长。
最佳答案
想到一个正则表达式:
>>> my_str = 'soooo hiiiii whyyyy done'
>>> import re
>>> regex = re.compile(r"(.)\1{2}")
>>> [word for word in my_str.split() if regex.search(word)]
['soooo', 'hiiiii', 'whyyyy']
说明:
(.) # Match any character, capture it in group number 1
\1{2} # Try to match group number 1 here, twice.
注意,这个算法也会发现一些不长的单词,比如
countessship
或laparohysterosalpingooophorectomy
,但我想这些误报是很少见的:)关于python - 字符串包含拉长的单词,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20519747/