Python 当一个数字是'时,如何检查它是否是一个数字;字符串';?
这是一个更大计划的一部分。这就是我要做的Python 当一个数字是'时,如何检查它是否是一个数字;字符串';?,python,types,integer,Python,Types,Integer,这是一个更大计划的一部分。这就是我要做的 将一个句子传递给scan方法 让句子包含数字 把这个句子分成不同的词 在列表中附加一个元组,元组中的第一个表达式是单词或句子元素所适合的类型,第二个表达式是单词或数字 以下是我正在尝试的: def scan(self, sentence): self.term = [] for word in sentence.split(): if word in direction: self.term.ap
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')你可以将
int
应用于word
并捕获一个ValueError
,如果它不是一个数字。你可以将int
应用于word
并捕获一个ValueError
,如果它不是一个数字。因为你只需要正整数,那么试试elif-word.isdigit():
(请注意,这也将接受“0”)。因为您只需要正整数,所以请尝试elif word.isdigit():
(请注意,这也将接受“0”)
使用.lstrip('0')
将删除前导的0,并导致'0'
和'000'
等字符串无法通过检查。如果word.isdigit()和word!='0'只需执行,则不会排除'00'
或任何其他多个'0'
字符串
您也可以使用尝试
/除了
/其他
之外,查看它是否为int
,并做出相应的响应
try:
int(s)
except ValueError:
print s, 'is not an int'
else:
print s, 'is an int'
使用.lstrip('0')
将删除前导的0,并导致'0'
和'000'
等字符串无法通过检查。如果word.isdigit()和word!='0'
只需执行,则不会排除'00'
或任何其他多个'0'
字符串
您也可以使用尝试
/除了
/其他
之外,查看它是否为int
,并做出相应的响应
try:
int(s)
except ValueError:
print s, 'is not an int'
else:
print s, 'is an int'
你到底在做什么?键入(int(word))==int???你把它转换成int,然后检查它是否是int?你到底在做什么?键入(int(word))==int???你把它转换成int,然后检查它是否是int?你可以做elif-word.isdigit()的复制和word!='0':
过滤掉零。可能:elif-word.ltrim('0').isdigit()
elif-word.isdigit()和int(word)>0:
在'if'测试期间,我会坚持使用字符串样式的方法,比如Jon Clements对lstrip的建议,并尝试使用int()当我们知道需要此值为正整数时,仅在elif正文中转换一次。您可以执行elif-word.isdigit()和word!=“0”:
以过滤掉零。可能:elif-word.ltrim('0').isdigit()
elif-word.isdigit()和int(word)>0:在“if”测试期间,我会坚持使用字符串样式的方法,比如Jon Clements对lstrip的建议,并尝试使用int()方法当我们知道需要这个值为正整数时,只在elif正文中转换一次。执行除值错误:
然后做什么?执行除值错误:
然后做什么?s
是一个字符串,所以你的意思是“and!='0'。@PaulMcGuire我的意思是int(s)
事实上,但是是的,我的错误谢谢s
是一个字符串,所以你的意思是“and s!=“0”。@PaulMcGuire我的意思是int(s)
事实上,但是是的,我的错误谢谢