Bagaimana cara memeriksa apakah karakter dalam string adalah huruf? (Python)

122

Saya tahu tentang islowerdan isupper, tetapi dapatkah Anda memeriksa apakah karakter itu adalah huruf atau tidak? Sebagai contoh:

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

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

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

Adakah cara untuk menanyakan apakah itu karakter selain melakukan .islower()atau .isupper()?

O.rka
sumber
2
Harap dicatat bahwa "karakter kata" dalam pemrograman biasanya mengacu pada huruf dan angka dan garis bawah. Pertanyaan ini sebenarnya menanyakan tentang "surat"; jika Anda perlu melihat apakah suatu karakter adalah karakter kata, cara terbaik yang pernah saya temukan adalah character.isalnum() or character == "_".
Variadicism
Saya tahu tapi saya menanyakan ini seperti 3 tahun yang lalu ketika saya pertama kali memulai pemrograman. Jangan ragu untuk mengeditnya.
O.rka
Cukup adil. Kita semua pernah ke sana. Saya akan meminta edit.
Variadicism

Jawaban:

191

Anda bisa menggunakan str.isalpha().

Sebagai contoh:

s = 'a123b'

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

Keluaran:

a True
1 False
2 False
3 False
b True
rainer
sumber
9
harap dicatat, ini sangat bagus sehingga berfungsi untuk berbagai alfabet juga: >>> print [x.isalpha() for x in u'Español-한국어']memberi Anda [True, True, True, True, True, True, True, False, True, True, True] seperti yang diharapkan
pryma
27
str.isalpha()

Kembalikan nilai benar jika semua karakter dalam string adalah alfabet dan setidaknya ada satu karakter, salah jika sebaliknya. Karakter abjad adalah karakter yang ditentukan dalam database karakter Unicode sebagai "Letter", yaitu karakter dengan properti kategori umum menjadi salah satu dari "Lm", "Lt", "Lu", "Ll", atau "Lo". Perhatikan bahwa ini berbeda dari properti "Abjad" yang ditentukan dalam Unicode Standard.

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

Di python3.x:

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

Kode ini berfungsi:

>>> 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)
>>>
Legolas Bloom
sumber
4

Saya menemukan cara yang baik untuk melakukan ini dengan menggunakan fungsi dan kode dasar. Ini adalah kode yang menerima string dan menghitung jumlah huruf kapital, huruf kecil dan juga 'lainnya'. Lainnya digolongkan sebagai spasi, tanda baca atau bahkan karakter Jepang dan Cina.

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.")
MII
sumber
str.isalphajauh lebih mudah '
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)

Keluaran:

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

Dengan menggunakan str.isalpha()Anda dapat memeriksa apakah itu surat.

Chandan Sharma
sumber
0

Ini bekerja:

any(c.isalpha() for c in 'string')
amalik2205
sumber
-2

Ini bekerja:

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.")
omry
sumber
gunakan sebagai gantinya ==, jika a salah
Legolas Bloom