How to check if a variable is an integer or a string?
本问题已经有最佳答案,请猛点这里访问。
我有一个有几个命令的应用程序。
当您键入某个命令时,您必须输入有关某事/某人的其他信息。
现在信息必须严格地是整数或字符串,具体取决于具体情况。
但是,无论你使用raw_input()输入Python是什么,实际上都是一个字符串,无论如何,更具体地说,我怎么会很快和没有尝试...除了看看变量是由数字还是字符组成?
在我看来,你有两个选择:
-
只是尝试将其转换为
int ,但捕获异常:1
2
3
4try:
value = int(value)
except ValueError:
pass # it was a string, not an int.这就是Ask Forgiveness方法。
-
显式测试字符串中是否只有数字:
1value.isdigit()仅当字符串中的所有字符都是数字(
0 -9 )时,str.isdigit() 才返回True 。unicode / Python 3str 等效类型是unicode.isdecimal() /str.isdecimal() ;只有Unicode小数可以转换为整数,因为并非所有数字都有实际的整数值(例如,U + 00B2 SUPERSCRIPT 2是一个数字,但不是小数)。这通常称为Ask Permission方法,或Look Before You Leap。
后者不会检测所有有效的
如果您希望用户通常输入整数,请使用第一个表单。在这种情况下,要求宽恕而不是许可更容易(也更快)。
如果你想检查它是什么:
1 2 3 4 5 6 7 8 | >>>isinstance(1,str) False >>>isinstance('stuff',str) True >>>isinstance(1,int) True >>>isinstance('stuff',int) False |
如果你想从raw_input获取整数
1 2 3 4 5 6 7 | >>>x=raw_input('enter thing:') enter thing: 3 >>>try: x = int(x) except: pass >>>isinstance(x,int) True |
如果给定的字符串只是一个或多个数字,则
根据您的简短定义,您可以使用以下选项之一:
-
try: int(your_input); except ValueError: # ... -
your_input.isdigit() - 使用正则表达式
-
使用
parse ,它与format 相反
不检查。继续并假设它是正确的输入,如果不是,则捕获异常。
1 2 3 4 5 | intresult = None while intresult is None: input = raw_input() try: intresult = int(input) except ValueError: pass |