2

给定这个字符串

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

我做了另一个字符串来检查它是否是小写字母。还要检查它是否是一个单词,我取了字符串的长度,如果长度大于一个,我确定它是一个单词还是一个数字

问题是我如何检查它是一个单词还是一个数字

请帮忙

4

4 回答 4

4

字符串有方法isalpha,并isdigit分别测试它们是否由字母和数字组成:

>>> 'hello'.isalpha()
True
>>> '123'.isdigit()
True

请注意,它们仅检查这些字符,因此带有空格或其他任何内容的字符串都将返回 false:

>>> 'hi there'.isalpha()
False

但是,如果您希望将值作为数字,则最好只使用int. 请注意,检查isinstance结果是否确实是整数是没有意义的。如果int(blah)成功,它将始终返回一个整数;如果字符串不代表整数,则会引发异常。

于 2012-06-25T07:27:50.387 回答
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'
于 2012-06-25T07:27:14.300 回答
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()

于 2012-06-25T07:32:57.390 回答
0

为了获得更多控制权,尤其是如果您有某种类型的字符串不支持内置函数,您可以使用 re -

像下面这样的常规 exp 来检查它是否是一个数字 -

re.findall(r'^[-]?[0-9]*[\.]?[0-9]*$', s)

以及以下常规 exp 以检查其是否为字符串-

r'^[a-zA-Z]+$'

请注意,这只是为了演示,您应该根据需要修改常规 exp。

于 2012-06-25T09:24:05.717 回答