Bir dizedeki karakterin harf olup olmadığını nasıl kontrol edebilirim? (Python)


122

Bilmem islowerve isupperfakat karakteri bir harf olduğunu olup olmadığını kontrol edebilir? Örneğin:

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

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

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

Yaptığını yanında bir karakter ise sadece sormak için herhangi bir yolu var mı .islower()yoksa .isupper()?


2
Programlamadaki "kelime karakterinin" genellikle harfleri, sayıları ve alt çizgileri ifade ettiğini lütfen unutmayın. Bu soru aslında "mektuplar" hakkında soruyor; Bir karakterin bir kelime karakteri olup olmadığını görmeniz gerekiyorsa, bulduğum en iyi yol character.isalnum() or character == "_".
Variadicism

Biliyorum ama bunu 3 yıl önce programlamaya ilk başladığımda sordum. Düzenlemekten çekinmeyin.
O.rka

Yeterince adil. Hepimiz oradaydık. Bir düzenleme talep edeceğim.
Variadicism

Yanıtlar:


191

Kullanabilirsiniz str.isalpha().

Örneğin:

s = 'a123b'

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

Çıktı:

a True
1 False
2 False
3 False
b True

9
lütfen unutmayın, çeşitli alfabeler için de işe >>> print [x.isalpha() for x in u'Español-한국어']
yarayacaktır: size

27
str.isalpha()

Dizedeki tüm karakterler alfabetikse ve en az bir karakter varsa true, aksi takdirde false döndürür. Alfabetik karakterler, Unicode karakter veritabanında "Harf" olarak tanımlanan karakterlerdir, yani genel kategori özelliği "Lm", "Lt", "Lu", "Ll" veya "Lo" karakterlerinden biridir. Bunun Unicode Standardında tanımlanan "Alfabetik" özelliğinden farklı olduğuna dikkat edin.

Python2.x içinde:

>>> 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 içinde:

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

Bu kod çalışır:

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

Bunu bir işlev ve temel kod kullanarak yapmanın iyi bir yolunu buldum. Bu, bir dizeyi kabul eden ve büyük harflerin, küçük harflerin ve ayrıca 'diğer'in sayısını sayan bir koddur. Diğeri boşluk, noktalama işareti ve hatta Japonca ve Çince karakterler olarak sınıflandırılır.

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.isalphaçok daha kolay '
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)

Çıktı:

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

Kullanarak str.isalpha()harf olup olmadığını kontrol edebilirsiniz.



-2

Bu çalışıyor:

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

yerine ==, eğer bir yanlışsa kullanılır
Legolas Bloom
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.