Как я могу проверить, является ли символ в строке буквой? (Python)

122

Я знаю про islowerи isupper, но можете ли вы проверить, является ли этот символ буквой? Например:

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

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

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

Есть ли способ просто спросить, является ли это персонаж помимо действия .islower()или .isupper()?

O.rka
источник
2
Обратите внимание, что «словесный символ» в программировании обычно означает буквы, цифры и символы подчеркивания. На самом деле этот вопрос касается «букв»; если вам нужно увидеть, является ли символ словесным, лучший способ, который я нашел, - это character.isalnum() or character == "_".
Вариадизм
Я знаю, но я спросил об этом 3 года назад, когда только начинал программировать. Не стесняйтесь редактировать это.
O.rka
Справедливо. Мы все были там. Я прошу правку.
Вариадизм

Ответы:

192

Вы можете использовать str.isalpha().

Например:

s = 'a123b'

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

Вывод:

a True
1 False
2 False
3 False
b True
райнер
источник
9
обратите внимание, это так хорошо, что он работает и для различных алфавитов: >>> print [x.isalpha() for x in u'Español-한국어']дает вам [True, True, True, True, True, True, True, False, True, True, True], как и ожидалось
pryma
27
str.isalpha()

Верните true, если все символы в строке буквенные и есть хотя бы один символ, иначе false. Алфавитные символы - это те символы, которые определены в базе данных символов Unicode как «Letter», т. Е. Те, у которых свойство общей категории является одним из «Lm», «Lt», «Lu», «Ll» или «Lo». Обратите внимание, что это отличается от свойства «Alphabetic», определенного в стандарте 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)
>>>
Леголас Блум
источник
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.")
MII
источник
str.isalphaнамного проще, чем '
Ариан Бизадур
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)

Вывод:

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

С помощью str.isalpha()вы можете проверить, буква ли это.

Чандан Шарма
источник
0

Это работает:

any(c.isalpha() for c in 'string')
amalik2205
источник
-2

Это работает:

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.")
омры
источник
используйте вместо этого ==, если a - false
Леголас Блум