[英]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.