web-dev-qa-db-ja.com

Pythonで小文字を検出する方法は?

文字列内の小文字を検出する関数があるかどうかを知る必要があります。このプログラムを書き始めたとしましょう:

s = input('Type a Word')

文字列s内の小文字を検出できる関数はありますか?おそらく、それらの文字を別の変数に割り当てるか、単に小文字または複数の小文字を印刷することになります。

これらは私がやりたいことですが、小文字の存在を検出する方法に最も興味があります。最も簡単な方法は大歓迎です。私は入門pythonコースにいるだけなので、中期課程を受講する際に先生は複雑なソリューションを見たくありません。助けてくれてありがとう!

32
JustaGuy313

文字が小文字かどうかを確認するには、islowerstrメソッドを使用します。この単純な命令型プログラムは、文字列内のすべての小文字を印刷します。

_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'
_
35
Mark Byers

組み込み関数anyとジェネレーターを使用できます。

>>> any(c.islower() for c in 'Word')
True

>>> any(c.islower() for c in 'Word')
False
12
Hyungoo Kang

小文字を探す方法は2つあります。

  1. str.islower() を使用して、小文字を検索します。リスト内包表記と組み合わせて、すべての小文字を収集できます。

    lowercase = [c for c in s if c.islower()]
    
  2. 正規表現を使用できます。

    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']
11
Martijn Pieters

これには多くの方法がありますが、そのうちのいくつかを次に示します。

  1. 定義済みのstrメソッドislower()を使用する:

    _>>> c = 'a'
    >>> c.islower()
    True
    _
  2. ord()関数を使用して、ASCII文字のコードが小文字のASCIIコードの範囲内にあるかどうかを確認します。

    _>>> c = 'a'
    >>> ord(c) in range(97, 123)
    True
    _
  3. 文字が小文字に等しいかどうかを確認します。

    _>>> c = 'a'
    >>> c.lower() == c
    True
    _
  4. 文字が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
_
5
MrGeek

文字列を入力するには、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の他の属性が見つかります

3
Hussain
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
1
user648852