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

这是一个更大计划的一部分。这就是我要做的

  • 将一个句子传递给scan方法
  • 让句子包含数字
  • 把这个句子分成不同的词
  • 在列表中附加一个元组,元组中的第一个表达式是单词或句子元素所适合的类型,第二个表达式是单词或数字
  • 以下是我正在尝试的:

    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)
    事实上,但是是的,我的错误谢谢