这是大型计划的一部分。这是我想要做的。
以下是我的尝试:
def scan(self, sentence):
self.term = []
for word in sentence.split():
if word in direction:
self.term.append(('direction', word))
elif word in verbs:
self.term.append(('verb', word))
elif word in stop:
self.term.append(('stop', word))
elif word in nouns:
self.term.append(('noun', word))
elif type(int(word)) == 'int':
self.term.append(('number', int(word)))
else:
self.term.append(('error', word))
return self.term
print lexicon.scan('12 1234')
这是类中的方法,print语句在外面。我关心并遇到麻烦的部分是:
elif type(int(word)) == int:
self.term.append(('number', int(word)))
它适用于任何自然数[1,无穷大]
编辑: 我尝试扫描时遇到问题('ASDFASDFASDF')
答案 0 :(得分:5)
由于您只需要正整数,请尝试elif word.isdigit():
(请注意,这也会接受“0”)。
答案 1 :(得分:1)
if word.lstrip('0').isdigit():
#append
使用.lstrip('0')
将删除前导0并导致'0'
和'000'
等字符串无法通过检查。简单地执行if word.isdigit() and word !='0'
不会排除'00'
或任何其他只有多个'0'
的字符串
您还可以使用try
/ except
/ else
来查看它是int
并做出相应的回应
try:
int(s)
except ValueError:
print s, 'is not an int'
else:
print s, 'is an int'
答案 2 :(得分:0)
如果int
不是数字,您可以将word
应用于ValueError
并抓住{{1}}。