鉴于此字符串
random_string= '4'
我想确定它是一个整数,一个字符还是一个单词 我虽然可以做到这一点
test = int(random_string)
isinstance(test,int) == True
但我意识到如果random_string不包含数字我会有错误
random_string基本上可以是
形式random_string ='hello'
random_string ='H'
random_string ='r'
random_string ='56'
任何人都知道这样做的方法,有点困惑,因为确定它是我所做的一个角色
chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
random_string in chars == True
我做了另一个字符串来检查它是否是一个小写字母。 还要检查它是否有一个单词,我取了字符串的长度,如果长度超过一个我确定它是一个单词或数字
问题是如何检查它的单词或数字
请帮助
答案 0 :(得分:4)
字符串有方法isalpha
和isdigit
来测试它们是否分别由字母和数字组成:
>>> 'hello'.isalpha()
True
>>> '123'.isdigit()
True
请注意,他们只会检查这些字符,因此包含空格或其他任何内容的字符串都将返回false:
>>> 'hi there'.isalpha()
False
但是,如果您希望将该值作为数字,那么最好只使用int
。请注意,使用isinstance
检查结果是否确实是整数是没有意义的。如果int(blah)
成功,它将始终返回一个整数;如果字符串不表示整数,则会引发异常。
答案 1 :(得分:2)
选择。
>>> '4'.isdigit()
True
>>> '-4'.isdigit()
False
>>> int('-4')
-4
>>> 'foo'.isdigit()
False
>>> int('foo')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: 'foo'
答案 2 :(得分:2)
为了实现你所要求的逻辑,我想最pythonic的方法是使用异常处理:
try:
n = int(random_string)
except ValueError:
if len(random_string) > 1:
# it's a word
else:
# it's a character (or the empty string)
要检查大小写,可以使用字符串方法islower()
。
答案 3 :(得分:0)
要获得更多控制,尤其是如果你有某种类型的内置函数不支持的字符串,你可以使用re -
如下所示的常规exp以检查它是否为数字 -
re.findall(r'^[-]?[0-9]*[\.]?[0-9]*$', s)
和以下常规exp来检查它是否为字符串 -
r'^[a-zA-Z]+$'
请注意,这仅用于演示,您应该根据需要修改常规exp。