如何从字符串中获取连续的项目

sim*_*sim 5 python

我需要获取连续超过一个字符的子字符串

这是我的代码:

l = []
p = 'abbdccc'
for i in range(len(p)-1):
    m = ''
    if p[i] == p[i+1]:
        m +=p[i]
        l.append(m)
print(l)
Run Code Online (Sandbox Code Playgroud)
  • 我的字符串是“abbdccc”
  • b并且c重复超过1次
  • 预期输出是['bb', 'ccc']

如果我的字符串是'34456788'那么我的输出是['44', '88']

Tim*_*sen 5

如果使用正则表达式是可能的或者您感兴趣,re.findall提供了一种非常简单的方法来执行此操作:

inp = "abbdccc"
matches = [x[0] for x in re.findall(r'((.)\2+)', inp)]
print(matches)  # ['bb', 'ccc']
Run Code Online (Sandbox Code Playgroud)


Shu*_*rma 3

解决方案与groupby

from itertools import groupby

[v for _, g in groupby(s) if (v := ''.join(g)) and len(v) > 1]
Run Code Online (Sandbox Code Playgroud)

输入字符串的示例运行s

# input: 'abbdccc'
# output: ['bb', 'ccc']

# input: '34456788'
# output: ['44', '88']
Run Code Online (Sandbox Code Playgroud)

  • 在 *groupby* 中漂亮地使用 *warlus* 来检查连续数.. 不错。+1 (2认同)