Как я могу проверить, содержит ли строка ЛЮБЫЕ буквы из алфавита? - PullRequest
58 голосов
/ 31 января 2012

Какая реализация на чистом Python лучше всего проверить, содержит ли строка ЛЮБЫЕ буквы из алфавита?

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

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

Ответы [ 6 ]

94 голосов
/ 31 января 2012

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

re.search('[a-zA-Z]', the_string)
57 голосов
/ 31 января 2012

Как насчет:

>>> 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
17 голосов
/ 24 марта 2017

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

ниже: буквы в строке: test возвращает 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, только если все символы являются буквами, а это не то, что вам нужно.

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

8 голосов
/ 31 января 2012

Вы можете использовать регулярное выражение, как это:

import re

print re.search('[a-zA-Z]+',string)
6 голосов
/ 23 ноября 2017

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

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

Лучше всего сначала прописать строчную или строчную строчку, а затем проверить.

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

>>> string1.upper().isupper()
True
>>> string2.upper().isupper()
False
0 голосов
/ 12 апреля 2018

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

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.Это означает, что поиск не нашел совпадение

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...