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


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

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

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

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.



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

gunakan sebagai gantinya ==, jika a salah
Legolas Bloom
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.