如果数字是'字符串',如何检查数字是否为数字?

时间:2013-05-20 17:49:17

标签: python types integer

这是大型计划的一部分。这是我想要做的。

  1. 将句子传递给扫描方法。
  2. 请句子包含数字。
  3. 将句子分成不同的术语。
  4. 在列表中追加一个元组,元组中的第一个表达式是单词或句子元素所适合的类型,第二个是单词或数字。
  5. 以下是我的尝试:

    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')

3 个答案:

答案 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}}。