如何检查字符串中的字符是否为字母?(Python)

220 投票
7 回答
677422 浏览
提问于 2025-04-17 19:56

我知道有 islowerisupper 这两个方法,但有没有办法检查一个字符是不是字母呢?

比如说:

>>> s = 'abcdefg'
>>> s2 = '123abcd'
>>> s3 = 'abcDEFG'
>>> s[0].islower()
True

>>> s2[0].islower()
False

>>> s3[0].islower()
True

有没有什么简单的方法可以直接问这个字符是不是字母,而不需要用 .islower().isupper() 呢?

7 个回答

4

我找到了一种简单的方法来实现这个功能,使用了一个函数和一些基本的代码。这个代码可以接收一个字符串,然后统计里面大写字母、小写字母的数量,还有其他字符的数量。这里的“其他”包括空格、标点符号,甚至是日文和中文字符。

def check(count):

    lowercase = 0
    uppercase = 0
    other = 0

    low = 'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'
    upper = 'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'



    for n in count:
        if n in low:
            lowercase += 1
        elif n in upper:
            uppercase += 1
        else:
            other += 1

    print("There are " + str(lowercase) + " lowercase letters.")
    print("There are " + str(uppercase) + " uppercase letters.")
    print("There are " + str(other) + " other elements to this sentence.")
43
str.isalpha()

如果字符串中的所有字符都是字母,并且至少有一个字符,就返回真(true),否则返回假(false)。字母字符是指在Unicode字符数据库中被定义为“字母”的那些字符,也就是说,它们的类别属性是“Lm”、“Lt”、“Lu”、“Ll”或“Lo”中的一种。需要注意的是,这与Unicode标准中定义的“字母”属性是不同的。

在python2.x中:

>>> s = u'a1中文'
>>> for char in s: print char, char.isalpha()
...
a True
1 False
中 True
文 True
>>> s = 'a1中文'
>>> for char in s: print char, char.isalpha()
...
a True
1 False
� False
� False
� False
� False
� False
� False
>>>

在python3.x中:

>>> s = 'a1中文'
>>> for char in s: print(char, char.isalpha())
...
a True
1 False
中 True
文 True
>>>

这段代码可以工作:

>>> def is_alpha(word):
...     try:
...         return word.encode('ascii').isalpha()
...     except:
...         return False
...
>>> is_alpha('中国')
False
>>> is_alpha(u'中国')
False
>>>

>>> a = 'a'
>>> b = 'a'
>>> ord(a), ord(b)
(65345, 97)
>>> a.isalpha(), b.isalpha()
(True, True)
>>> is_alpha(a), is_alpha(b)
(False, True)
>>>
331

你可以使用 str.isalpha() 这个方法。

比如说:

s = 'a123b'

for char in s:
    print(char, char.isalpha())

输出结果是:

a True
1 False
2 False
3 False
b True

撰写回答