Làm cách nào để kiểm tra xem ký tự trong chuỗi có phải là một chữ cái không? (Python)


121

Tôi biết về islowerisupper, nhưng bạn có thể kiểm tra xem ký tự đó có phải là một chữ cái hay không? Ví dụ:

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

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

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

Có cách nào chỉ cho hỏi đó là ký tự ngoài làm .islower()hay .isupper()không?


2
Xin lưu ý rằng "ký tự từ" trong lập trình thường đề cập đến các chữ cái và số và dấu gạch dưới. Câu hỏi này thực sự là hỏi về "chữ cái"; nếu bạn cần xem một ký tự có phải là một ký tự từ hay không, cách tốt nhất tôi đã tìm thấy là character.isalnum() or character == "_".
Chủ nghĩa đa dạng

Tôi biết nhưng tôi đã hỏi điều này như cách đây 3 năm khi tôi mới bắt đầu lập trình. Hãy chỉnh sửa nó.
O.rka

Đủ công bằng. Tất cả chúng tôi đã ở đó. Tôi sẽ yêu cầu chỉnh sửa.
Chủ nghĩa đa dạng

Câu trả lời:


190

Bạn có thể sử dụng str.isalpha().

Ví dụ:

s = 'a123b'

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

Đầu ra:

a True
1 False
2 False
3 False
b True

9
xin vui lòng lưu ý, nó là như vậy tốt nó hoạt động cho bảng chữ cái khác nhau cũng như: >>> print [x.isalpha() for x in u'Español-한국어']cung cấp cho bạn [True, True, True, True, True, True, True, False, True, True, True] như mong đợi
pryma

27
str.isalpha()

Trả về true nếu tất cả các ký tự trong chuỗi là bảng chữ cái và có ít nhất một ký tự, ngược lại là false. Các ký tự chữ cái là những ký tự được định nghĩa trong cơ sở dữ liệu ký tự Unicode là “Chữ cái”, tức là những ký tự có thuộc tính danh mục chung là một trong các “Lm”, “Lt”, “Lu”, “Ll” hoặc “Lo”. Lưu ý rằng điều này khác với thuộc tính "Alphabetic" được xác định trong Tiêu chuẩn Unicode.

Trong 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
>>>

Trong python3.x:

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

Mã này hoạt động:

>>> 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)
>>>

4

Tôi đã tìm thấy một cách tốt để làm điều này bằng cách sử dụng một hàm và mã cơ bản. Đây là mã chấp nhận một chuỗi và đếm số lượng các chữ cái viết hoa, chữ thường và cả 'khác'. Khác được phân loại là dấu cách, dấu chấm câu hoặc thậm chí là các ký tự tiếng Nhật và tiếng Trung.

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.")

str.isalphadễ dàng hơn nhiều khi '
Aryan Beezadhur

1

data = "abcdefg hi j 12345"

digits_count = 0
letters_count = 0
others_count = 0

for i in userinput:

    if i.isdigit():
        digits_count += 1 
    elif i.isalpha():
        letters_count += 1
    else:
        others_count += 1

print("Result:")        
print("Letters=", letters_count)
print("Digits=", digits_count)

Đầu ra:

Please Enter Letters with Numbers:
abcdefg hi j 12345
Result:
Letters = 10
Digits = 5

Bằng cách sử dụng, str.isalpha()bạn có thể kiểm tra xem nó có phải là một lá thư hay không.



-2

Những công việc này:

word = str(input("Enter string:"))
notChar = 0
isChar = 0
for char in word:
    if not char.isalpha():
        notChar += 1
    else:
        isChar += 1
print(isChar, " were letters; ", notChar, " were not letters.")

sử dụng là thay vì ==, nếu a là sai
Legolas Bloom
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.