为了账号安全,请及时绑定邮箱和手机立即绑定

获取Python字符串中相同字符的第一个连续序列的开始和结束索引

获取Python字符串中相同字符的第一个连续序列的开始和结束索引

智慧大石 2023-08-08 15:51:59
我想获取python中相同字符串的第一个连续序列的开始和结束索引'aaabca' -> (0, 2)'helllooo' ->  (2, 4)'hellooo' -> (2,3)'abcd' -> (-1, -1)有没有一种超级干净的方法来实现这一点?
查看完整描述

3 回答

?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

您可以使用 aregex来查找 char ( ) 的重复(\w)\1+,然后获取匹配的位置(使用m.start()和m.end())


values = ['aaabca', 'helllooo', 'hellooo', 'abcd']


for value in values:

    m = re.search(r'(\w)\1+', value)

    if m:

        print(f'{value:10s}{str((m.start(), m.end() - 1)):10s}{m.group(0)}')

    else:

        print(f'{value:10s}{str((-1, -1)):10s}')

给予


aaabca    (0, 2)    aaa

helllooo  (2, 4)    lll

hellooo   (2, 3)    ll

abcd      (-1, -1)

笔记

要更改搜索重复项的字符类型,请替换\w

  • (\d)\1+重复一个数字

  • (.)\1+任何字符的重复

  • ([a-z])\1+重复小写字母

  • ...


查看完整回答
反对 回复 2023-08-08
?
慕沐林林

TA贡献2016条经验 获得超9个赞

这是一种方法


x = "helllooo"


count = 0

start = -1

end = -1

for i in range(len(x)-1):

    if x[i] == x[i+1]:

        if count == 0:

            start = i

        count += 1

        end = start + count

    else:

        if count > 0:

            break

        count = 0


print(start, end)


查看完整回答
反对 回复 2023-08-08
?
慕码人2483693

TA贡献1860条经验 获得超9个赞

word_list=['aaabca','helllooo','hellooo','abcd']


def find(word):

    first_char=[]

    index_list=[]


    for n,i in enumerate(word):

         

        if n+1<len(word):

            

            if i==word[n+1]:

                first_char.append(i)

                

                while first_char[0]==i:

                    

                    index_list.append(n)

                    index_list.append(n+1)

                    break

    try:

        print(index_list[0],index_list[-1])

    except:

        print(-1,-1)

    

for word in word_list:

    find(word)


查看完整回答
反对 回复 2023-08-08
  • 3 回答
  • 0 关注
  • 161 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信