gpt4 book ai didi

python - 检查最后一个索引号时,如果索引超出范围怎么办?

转载 作者:行者123 更新时间:2023-12-05 07:04:29 27 4
gpt4 key购买 nike

你好我是 python 的新手,我正在编写一个模块,它应该将字符串作为输入,输出应该是每个单词、数字或符号的列表,没有空格。即('10 个甜苹果')--> ['十','甜','苹果']。为此,我有一个标记当前索引号的起始值和一个递增的结束值,只要字符串中的下一个内容是字母或数字。到目前为止,我已经成功地将单词、数字、符号等添加到一个列表中,该列表将在 for 循环结束时返回。

当我在最后一个索引号时,我的问题出现了。我有这段代码:

def tokenize (lines):
tokenizedList = []
for line in lines:
endValue = 0
startValue = 0
while startValue < len(line):

if line[endValue].isalpha():
while line[endValue].isalpha():
endValue = endValue + 1
word = line[startValue : endValue]
tokenizedList.append(word)
startValue = endValue

elif line[endValue].isdigit():
while line[endValue].isdigit():
endValue = endValue + 1
word = line[startValue : endValue]
tokenizedList.append(word)
startValue = endValue

elif line[endValue].isspace():
while line[endValue].isspace():
startValue += 1
endValue = startValue

else:
endValue += 1
word = line[startValue : endValue]
tokenizedList.append(word)
startValue = endValue

return tokenizedList

由于 if 语句中的 while 循环递增 endValue,它最终将超出索引范围。我不知道如何阻止此错误的发生以及应如何更改 while 循环以便它知道何时停止检查最后一个字母。有什么想法吗?

最佳答案

您可以简单地使用内置的 split 方法:

tokenizedList = ' my 3 words'.split(' ')

返回 ['我的', '3', '单词']

但是,如果您想坚持您的代码,您可以在增加 endValue 之前添加另一个条件:

if line[endValue].isalpha():
while line[endValue].isalpha() and endValue < len(line)-1:
endValue += 1
word = line[startValue : endValue]

不要忘记相应地更改数字的代码。

关于python - 检查最后一个索引号时,如果索引超出范围怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62918120/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com