Как обнаружить строчные буквы в Python?
Мне нужно знать, есть ли функция, которая обнаруживает строчные буквы в строке. Скажем, я начал писать эту программу:
s = input('Type a word')
Будет ли функция, которая позволяет мне обнаружить строчную букву внутри строки s? Возможно, заканчивается присвоением этих букв другой переменной или просто печать строчных букв или число строчных букв.
Пока это будет то, что я хотел бы сделать с этим, меня больше всего интересует, как обнаружить наличие строчных букв. Простейшие методы будут приветствоваться, я только во вводном курсе python, поэтому мой учитель не захочет видеть сложные решения, когда я беру свой средний срок. Спасибо за помощь!
Ответы
Ответ 1
Чтобы проверить, является ли символ строчным, используйте метод islower
str
. Эта простая императивная программа печатает все строчные буквы в строке:
for c in s:
if c.islower():
print c
Обратите внимание, что в Python 3 вы должны использовать print(c)
вместо print c
.
Возможно, закончится назначением этих букв другой переменной.
Чтобы сделать это, я бы предложил использовать понимание списка, хотя вы, возможно, еще не изучили это в своем курсе:
>>> s = 'abCd'
>>> lowercase_letters = [c for c in s if c.islower()]
>>> print lowercase_letters
['a', 'b', 'd']
Или для получения строки вы можете использовать ''.join
с генератором:
>>> lowercase_letters = ''.join(c for c in s if c.islower())
>>> print lowercase_letters
'abd'
Ответ 2
Вы можете использовать встроенную функцию any
и генератор.
>>> any(c.islower() for c in 'Word')
True
>>> any(c.islower() for c in 'WORD')
False
Ответ 3
Есть два разных способа поиска строчных символов:
-
Используйте str.islower()
, чтобы найти строчные буквы. В сочетании со списком вы можете собрать все строчные буквы:
lowercase = [c for c in s if c.islower()]
-
Вы можете использовать регулярное выражение:
import re
lc = re.compile('[a-z]+')
lowercase = lc.findall(s)
Первый метод возвращает список отдельных символов, второй возвращает список групп символов:
>>> import re
>>> lc = re.compile('[a-z]+')
>>> lc.findall('AbcDeif')
['bc', 'eif']
Ответ 4
Есть много способов для этого, вот некоторые из них:
-
Используя предопределенную функцию str.islower()
:
>>> c = 'a'
>>> c.islower()
True
-
Использование функции ord()
для проверки того, находится ли код ASCII буквы в диапазоне кодов ASCII строчных букв:
>>> c = 'a'
>>> ord(c) in range(97, 123)
True
-
Проверка, соответствует ли буква строчной букве:
>>> c = 'a'
>>> c.lower() == c
True
-
Проверка, находится ли буква в списке ascii_lowercase
string
модуля:
>>> from string import ascii_lowercase
>>> c = 'a'
>>> c in ascii_lowercase
True
Но это еще не все, вы можете найти свои собственные пути, если вам не нравятся эти: D.
Наконец, позвольте начать обнаруживать:
d = str(input('enter a string : '))
lowers = [c for c in d if c.islower()]
# here i used islower() because it the shortest and most-reliable
# one (being a predefined function), using this list comprehension
# is (probably) the most efficient way of doing this
Ответ 5
Вы должны использовать raw_input
для ввода строки. затем используйте метод islower
объекта str
.
s = raw_input('Type a word')
l = []
for c in s.strip():
if c.islower():
print c
l.append(c)
print 'Total number of lowercase letters: %d'%(len(l) + 1)
Просто сделай -
dir(s)
и вы найдете islower
и другие атрибуты str
Ответ 6
import re
s = raw_input('Type a word: ')
slower=''.join(re.findall(r'[a-z]',s))
supper=''.join(re.findall(r'[A-Z]',s))
print slower, supper
Печать
Type a word: A Title of a Book
itleofaook ATB
Или вы можете использовать выражение для понимания/генерации списка:
slower=''.join(c for c in s if c.islower())
supper=''.join(c for c in s if c.isupper())
print slower, supper
Печать
Type a word: A Title of a Book
itleofaook ATB