2017-04-09 79 views
0

Java人移动到Python。Python语法:如何检查一个值(字符串)是一个字符串还是一个数字,然后执行一些操作

我想检查一个字符串是字符串还是数字,然后做一些事情。我得到此语法错误

if value.isdigit() == True 
do something 

else: 
    if value.isdigit == False 
     do something. 
+3

最新错误? – zengr

+1

这工作正常: 'if value.isdigit():print(“A digit”)else:print(“不是一个数字”)' – zengr

+3

一个字符串总是一个字符串,而不是一个数字。你不需要任何代码来检查。如果你想检查你是否可以在一个字符串上调用'int'或'float'来产生一个int或者float,只要调用它并且捕获这个异常,如果事实证明你不能。 (这在Python中是正常的。)'isdigit'不会告诉你你需要知道什么;例如,它拒绝''''标志。 – user2357112

回答

1

沟槽嵌套if语句和显式布尔比较。此外,请不要忘记使用value.isdigit()而不是value.isdigit,并确保在if ...的末尾包含冒号。

if value.isdigit(): 
    # only digits 
else: 
    # not only digits 
+0

我删除了显式的布尔值和事情的工作。谢谢@gyre和所有的答案。 – Raghu

0

我不知道你的错误是什么,但你错过了两个if语句后的冒号。如果你想检查字符串是否是字母或数字,你可以使用代表字母数字的.isalnum方法。

if value.isalnum(): 
    # do stuff 
else: 
    # if it contains stuff not alphanumeric 

其他方法包括isalphaisdigitisdecimalisidenitifierislower,还有更多...

+1

一个字符串总是一个字符串。 –

+0

@ juanpa.arrivillaga哈哈现在听起来很愚蠢,只是根据标题 – abccd

0

正如在评论中提到有人说,在Python完全可以接受的把它从马的嘴:

try: 
    complex(x) # should be the most general 
    result = True # Python has no objections 
except ValueError: 
    result = False 

这会认识到从-1_000_000(Python3.6只+)什么+.24E-2+j。只有例外(我相信):它不会接受二进制,八进制或十六进制文字(0b1001,0o77,0xff)如果你想允许那些你需要特殊情况。

或者,如果您是正则表达式向导,则有re模块。我不是,但这里是一个整数检测器的尝试:

import re 
int_pattern = re.compile('^[+-]?(?:0|(?:[1-9][0-9]*))$') 

int_pattern.match('-13') 
# <_sre.SRE_Match object; span=(0, 3), match='-13'> 
相关问题