将重复字母限制为1和2的最佳方法是什么:
appppppple=>;苹果和苹果
bbbbb eeeeee r=>;ber,beer,bber,bber
现在,我有这个:
a = "hellllllllllooooooooooooo"
match = re.search('(.)\\1+', a)
if match:
print 'found'
print re.sub('(.)\\1+', '\\1', a)
print re.sub('(.)\\1+', '\\1\\1', a)
else:
print 'not found'
但它只返回:
^{pr2}$我怎样才能让它按我想要的方式工作?
不要用REs。REs有助于搜索、匹配和转换,但不适合生成字符串。在
我们可以把一个字符串看作一个向量;每个字母都是一个维度,而重复次数就是一个组件沿着该维度的长度。给定一个向量V,需要所有可能的向量都与V的维数相同,因此如果V的相应分量为1,则每个分量的值为1,否则为1或2。基于此,这里有一个函数,它可以执行您想要的。在
这里有一个使用切片的更紧凑的版本。它的可读性可能稍差,但至少保持在78个字符的限制范围内:
^{pr2}$这是我脑海中第一个非正则表达式的方法
首先生成一个通用的
squeeze
函数:然后我们就可以编写一个小函数来生成每个“可压缩置换”,并可用于初始化
^{pr2}$set
:相关问题 更多 >
编程相关推荐