亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

獲取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 關注
  • 228 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號