如何检查变量是整数还是字符串?

时间:2013-05-10 18:06:02

标签: python variables python-2.7

我有一个包含几个命令的应用程序。 当您键入某个命令时,您必须输入有关某事/某人的其他信息。 现在信息必须严格地是整数或字符串,具体取决于具体情况。

然而,无论你使用raw_input()输入Python是什么,实际上都是一个字符串,无论如何,更具体地说,我怎么会很快和没有尝试...除了看变量是由数字还是字符组成? / p>

5 个答案:

答案 0 :(得分:63)

在我看来,你有两个选择:

  • 只是尝试将其转换为int,但要抓住异常:

    try:
        value = int(value)
    except ValueError:
        pass  # it was a string, not an int.
    

    这是Ask Forgiveness方法。

  • 显式测试字符串中是否只有数字:

    value.isdigit()
    
    仅当字符串中的所有字符都是数字(True - 0)时,

    str.isdigit()才会返回9

    unicode / Python 3 str等效类型为unicode.isdecimal() / str.isdecimal();只有Unicode十进制可以转换为整数,因为并非所有数字都有一个实际的整数值(U+00B2 SUPERSCRIPT 2是一个数字,但不是一个小数,例如)。

    这通常称为Ask Permission方法,或Look Before You Leap。

后者不会检测到所有有效的int()值,因为+值中也允许使用空格和-以及int()。第一种形式会很乐意接受' +10 '作为数字,后者则不会。

如果您希望用户正常输入整数,请使用第一个表单。在这种情况下,要求宽恕而不是许可更容易(也更快)。

答案 1 :(得分:19)

如果你想检查它是什么:

>>>isinstance(1,str)
False
>>>isinstance('stuff',str)
True
>>>isinstance(1,int)
True
>>>isinstance('stuff',int)
False

如果你想从raw_input

获取整数
>>>x=raw_input('enter thing:')
enter thing: 3
>>>try: x = int(x)
   except: pass

>>>isinstance(x,int)
True

答案 2 :(得分:7)

isdigit method of the str type如果给定的字符串只是一个或多个数字,则返回True。如果不是,您知道字符串应该被视为一个字符串。

答案 3 :(得分:2)

根据您对很快的定义,您可以使用以下选项之一:

答案 4 :(得分:1)

不要检查。继续并假设它是正确的输入,并且如果不是则捕获异常。

intresult = None
while intresult is None:
    input = raw_input()
    try: intresult = int(input)
    except ValueError: pass