文字列内の小文字を検出する関数があるかどうかを知る必要があります。このプログラムを書き始めたとしましょう:
s = input('Type a Word')
文字列s内の小文字を検出できる関数はありますか?おそらく、それらの文字を別の変数に割り当てるか、単に小文字または複数の小文字を印刷することになります。
これらは私がやりたいことですが、小文字の存在を検出する方法に最も興味があります。最も簡単な方法は大歓迎です。私は入門pythonコースにいるだけなので、中期課程を受講する際に先生は複雑なソリューションを見たくありません。助けてくれてありがとう!
文字が小文字かどうかを確認するには、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'
_
組み込み関数any
とジェネレーターを使用できます。
>>> any(c.islower() for c in 'Word')
True
>>> any(c.islower() for c in 'Word')
False
小文字を探す方法は2つあります。
str.islower()
を使用して、小文字を検索します。リスト内包表記と組み合わせて、すべての小文字を収集できます。
lowercase = [c for c in s if c.islower()]
正規表現を使用できます。
import re
lc = re.compile('[a-z]+')
lowercase = lc.findall(s)
最初のメソッドは個々の文字のリストを返し、2番目のメソッドは文字のリストgroupsを返します。
>>> import re
>>> lc = re.compile('[a-z]+')
>>> lc.findall('AbcDeif')
['bc', 'eif']
これには多くの方法がありますが、そのうちのいくつかを次に示します。
定義済みの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
_
文字がstring
モジュールのリスト_ascii_lowercase
_にあるかどうかを確認します。
_>>> 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's the shortest and most-reliable
# one (being a predefined function), using this list comprehension
# is (probably) the most efficient way of doing this
_
文字列を入力するには、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
の他の属性が見つかります
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