Подтвердить что ты не робот

Как проверить, содержит ли строка какие-либо буквы из алфавита?

Что является лучшей чистой реализацией Python, чтобы проверить, содержит ли строка какие-либо буквы из алфавита?

string_1 = "(555).555-5555"
string_2 = "(555) 555 - 5555 ext. 5555

Где string_1 вернет False за отсутствие букв алфавита в нем, а string_2 вернет True для буквы.

4b9b3361

Ответ 1

Regex должен быть быстрым подходом:

re.search('[a-zA-Z]', the_string)

Ответ 2

Как насчет:

>>> string_1 = "(555).555-5555"
>>> string_2 = "(555) 555 - 5555 ext. 5555"
>>> any(c.isalpha() for c in string_1)
False
>>> any(c.isalpha() for c in string_2)
True

Ответ 3

Вы можете использовать islower() в вашей строке, чтобы увидеть, содержит ли она несколько строчных букв (среди других символов). or с помощью isupper() чтобы также проверить, содержит ли некоторые заглавные буквы:

ниже: буквы в строке: тест возвращает true

>>> z = "(555) 555 - 5555 ext. 5555"
>>> z.isupper() or z.islower()
True

ниже: в строке нет букв: test выдает false.

>>> z= "(555).555-5555"
>>> z.isupper() or z.islower()
False
>>> 

Не путать с isalpha() которая возвращает True только если все символы являются буквами, а это не то, что вам нужно.

Обратите внимание, что ответ Барма хорошо дополняет мой, поскольку мой плохо справляется со смешанным случаем.

Ответ 4

Вы можете использовать регулярное выражение следующим образом:

import re

print re.search('[a-zA-Z]+',string)

Ответ 5

Мне понравился ответ, предоставленный @jean-françois-fabre, но он неполный.
Его подход будет работать, но только если текст содержит чисто lower- или заглавные буквы:

>>> text = "(555).555-5555 extA. 5555"
>>> text.islower()
False
>>> text.isupper()
False

Лучший подход - сначала upper- или строчная строчка, а затем проверка.

>>> string1 = "(555).555-5555 extA. 5555"
>>> string2 = '555 (234) - 123.32   21'

>>> string1.upper().isupper()
True
>>> string2.upper().isupper()
False

Ответ 6

Вы также можете сделать это в дополнение

import re
string='24234ww'
val = re.search('[a-zA-Z]+',string) 
val[0].isalpha() # returns True if the variable is an alphabet
print(val[0]) # this will print the first instance of the matching value

Также обратите внимание, что если переменная val возвращает None. Это означает, что поиск не нашел соответствия