簡體   English   中英

如何修復此錯誤 IndexError: string index out of range

[英]How I can fix this error IndexError: string index out of range

我收到 IndexError: string index out of range 錯誤。

def get_int_arr(str):
    int_arr = []
    num_str = ""
    for i in range(len(str)):
        if str[i].isnumeric():
            num_str += str[i]
            if not str[i+1].isnumeric():
                int_arr.append(num_str)
                num_str = ""
    return int_arr
print(get_int_arr("data 48 call 9 read13 blank0"))

如果最后一個字符是數字,您應該只追加而不檢查下一個。

def get_int_arr(str):
    int_arr = []
    num_str = ""
    for i in range(len(str)):
        if str[i].isnumeric():
            num_str += str[i]
            if i + 1 == len(str) or not str[i + 1].isnumeric():
                int_arr.append(num_str)
                num_str = ""
    return int_arr

此外,您上面發布的代碼段不完整(我猜它錯過了函數定義的第一行),並且使用str類的保留關鍵字來命名變量/參數不是一個好習慣。

據我所知,您似乎想要在傳遞給 get_int_arr 的字符串中找到的所有數字的列表。 如果是這樣,那么:

def get_int_arr(s):
    return [c for c in s if c.isdigit()]


print(get_int_arr("data 48 call 9 read13 blank0"))

...會發出:

['4', '8', '9', '1', '3', '0']

如果在str的末尾添加一個空格並將for i in range(len(str)):更改for i in range(len(str)-1): ,它將起作用for i in range(len(str)-1):

def get_int_arr(str):
    int_arr = []
    num_str = ""
    str+=" " #Adding a space at the end of the string
    for i in range(len(str)-1):
        if str[i].isnumeric():
            num_str += str[i]
            if not str[i+1].isnumeric():
                int_arr.append(num_str)
                num_str = ""
    return int_arr
print(get_int_arr("data 48 call 9 read13 blank0"))

#Output: ['48', '9', '13', '0']

暫無
暫無

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

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