文字列中の小文字を検出する関数があるかどうか知りたい。こんなプログラムを書き始めたとする:
s = input('Type a word')
小文字を別の変数に代入するか、小文字か小文字の数だけを表示することになるかもしれません。
小文字を検出する方法に一番興味があります。私はPythonの入門コースに通っているだけなので、中間試験を受けるときに先生が複雑な解答を見たいとは思わないでしょう。ありがとうございました!
文字が小文字かどうかを調べるには、str
の islower
メソッドを使う。この単純な命令形プログラムは、文字列中の小文字をすべて表示する:
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種類ある:
1.1.str.islower()
を使って小文字を探す。リスト内包と組み合わせることで、すべての小文字を集めることができます:
lowercase = [c for c in s if c.islower()] (小文字)
2.正規表現を使うこともできる:
インポート re
lc = re.compile('[a-z]+')
小文字 = lc.findall(s)
最初のメソッドは個々の文字のリストを返し、2番目は文字のグループのリストを返す:
>>> import re
>>> lc = re.compile('[a-z]+')
>>> lc.findall('AbcDeif')
['bc', 'eif']
これには多くの方法があります。ここにそれらのいくつかがあります:
1。 事前定義された「str」メソッド「islower()」を使用します。
>>> c = 'a'。
>>> c.islower()。
本当です。
2。 ord()
関数を使用して、文字のASCIIコードが小文字ASCIIコードの範囲内にあるかどうかを確認します。
>>> c = 'a'。
>>>範囲内のord(c)(97、123)。
本当です。
3。 文字が小文字フォームと等しいかどうかを確認します。
>>> c = 'a'。
>>> c.lower()== c。
本当です。
4。 文字が「文字列」モジュールのリスト「ascii_lowercase」にあるかどうかを確認します。
>>>文字列インポートからascii_lowercase。
>>> c = 'a'。
>>> ascii_lowercaseのc。
本当です。
しかし、それだけではありません。これらの方法が気に入らない場合は、独自の方法を見つけることができます。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」を使用する必要があります。 次に、「str」オブジェクトの「islower」メソッドを使用します。
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)
そして、「下」と「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