Ответ 1
Regex должен быть быстрым подходом:
re.search('[a-zA-Z]', the_string)
Что является лучшей чистой реализацией Python, чтобы проверить, содержит ли строка какие-либо буквы из алфавита?
string_1 = "(555).555-5555"
string_2 = "(555) 555 - 5555 ext. 5555
Где string_1
вернет False
за отсутствие букв алфавита в нем, а string_2
вернет True
для буквы.
Regex должен быть быстрым подходом:
re.search('[a-zA-Z]', the_string)
Как насчет:
>>> 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
Вы можете использовать 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
только если все символы являются буквами, а это не то, что вам нужно.
Обратите внимание, что ответ Барма хорошо дополняет мой, поскольку мой плохо справляется со смешанным случаем.
Вы можете использовать регулярное выражение следующим образом:
import re
print re.search('[a-zA-Z]+',string)
Мне понравился ответ, предоставленный @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
Вы также можете сделать это в дополнение
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. Это означает, что поиск не нашел соответствия