为什么 .isdigit() 函数 return 在我使用时出错?
Why does the .isdigit() function return an error when I use it?
我正在尝试创建一个函数,当句子通过我的函数时,return将字符串数字作为“NUM”,但出现错误。我的代码如下:
def number_normalise(sentence):
for token in sentence:
if sentence[token].isdigit(): # This is the part that returns the error.
sentence[token] = "NUM"
else:
sentence[token]
return sentence
对于第三行代码,我收到一条错误消息,指出“列表索引必须是整数或切片,而不是 str”。我已经单独测试了这个函数,当它遇到一个只有数字的词(例如“5”、“1802”)时,它应该 return 一个布尔值。有人可以帮助我了解我的代码有什么问题以及如何改进它吗?
我不知道什么是句子变量,但我认为你应该写
...
if token.isdigit():
...
sentence
是一个字符串列表,您正在迭代这些字符串。因此,在第 3 行,您实际上是在尝试从列表中获取特定元素。但是,您传递的不是整数,即 sentence[2]
,而是一个字符串,即 sentence["apple"]
,由于显而易见的原因,这是错误的。
我想你想做的是:
def number_normalise(sentence: List[str]):
for i, token in enumerate(sentence):
if token.isdigit():
sentence[i] = "NUM"
return sentence
我认为是 sentence[token]
引起了问题。 token
可能是一个字符串,而您应该询问 sentence
中元素的索引
我正在尝试创建一个函数,当句子通过我的函数时,return将字符串数字作为“NUM”,但出现错误。我的代码如下:
def number_normalise(sentence):
for token in sentence:
if sentence[token].isdigit(): # This is the part that returns the error.
sentence[token] = "NUM"
else:
sentence[token]
return sentence
对于第三行代码,我收到一条错误消息,指出“列表索引必须是整数或切片,而不是 str”。我已经单独测试了这个函数,当它遇到一个只有数字的词(例如“5”、“1802”)时,它应该 return 一个布尔值。有人可以帮助我了解我的代码有什么问题以及如何改进它吗?
我不知道什么是句子变量,但我认为你应该写
...
if token.isdigit():
...
sentence
是一个字符串列表,您正在迭代这些字符串。因此,在第 3 行,您实际上是在尝试从列表中获取特定元素。但是,您传递的不是整数,即 sentence[2]
,而是一个字符串,即 sentence["apple"]
,由于显而易见的原因,这是错误的。
我想你想做的是:
def number_normalise(sentence: List[str]):
for i, token in enumerate(sentence):
if token.isdigit():
sentence[i] = "NUM"
return sentence
我认为是 sentence[token]
引起了问题。 token
可能是一个字符串,而您应该询问 sentence