簡體   English   中英

字符串中倒數第二個 integer (Python)

[英]Second last occurence of an integer in a string (Python)

integer 在字符串中的倒數第二個出現

將“hEY3 a7yY5”視為我的字符串,此字符串中的最后一個 integer 是 5,倒數第二個 integer 是 7。

如何在此字符串中找到最后一秒 integer 的索引? 我不確定我是否可以使用 rindex() 以及如何使用。

上面字符串中 7 的索引是 6。我無法集中精力編寫類似stre.rindex(isnumeric())的東西

這將找到字符串中倒數第二個出現的數字序列並打印其偏移量。

import re
a = "hEY3 a7yY5"
offsets = [m.start() for m in re.finditer(r'\d+', a)]
print(-1 if len(offsets) < 2 else offsets[-2])

如果你不喜歡re那么你可以這樣做:

offsets = []

for i, c in enumerate(a):
    if c.isdigit():
        if offsets:
            if offsets[-1] != i - 1:
                offsets.append(i)
        else:
            offsets = [i]
            
print(-1 if len(offsets) < 2 else offsets[-2])

Output:

6

請注意,如果字符串是“hEY7 a75yY5”,則會打印相同的結果 - 即,這也處理多於一位的序列

你可以嘗試這樣的事情

a = "hEY3 a7yy5"
out = [i for i,j in enumerate(a) if j.isnumeric()][-2]
print(out)

使用模式獲取倒數第二個數字的索引的選項,並使用Match object 的 start() 方法:

s = "hEY3 a7yY5"
pattern = r"\d(?=[^\d\n]*\d[^\d\n]*\Z)"

m = re.search(pattern, s)
if m:
    print(m.start())

Output

6

模式匹配:

  • \d匹配單個數字
  • (?=正面前瞻,斷言右邊的是
    • [^\d\n]*可選擇匹配除數字或換行符之外的任何字符
    • \d匹配單個數字
    • [^\d\n]*可選擇匹配除數字或換行符之外的任何字符
    • \Z字符串結束
  • )關閉前瞻

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM