2011-08-05 3 views
0

大文字の文字を非大文字にする関数を作りたいと思います。文字列の文字を作る方法lowercas、Python

私は
if x in caps
キャップはすべて大文字のリストをある を行う可能性が考えていた、と私はそれが私はそれが小文字で自身を置き換える可能性があり、手紙が入っているリスト内の位置を返していました。

どうすればよいですか?

ありがとうございました。

問題が解決しない場合、あなたは常に反復処理し、その後、ORDとCHRを使用することができます

a = 'aBcDeFg' 
print a.lower() # abcdefg 

「下」に組み込まれて使用しないのはなぜ

+0

誤解を招くタイトル – warvariuc

+0

@warvariucそれは私が使っていると思った解決策です。 'もしxが大文字であれば'、それが持っていた位置を見つけて、それを別のリストと照合し、そこの対応するスロットの文字と置き換える。 – JShoe

+1

あなたの質問を反映するようにタイトルを変更してください。解決策ではありません。 – warvariuc

答えて

6

"".join(
    # if i is between A and Z change it to between a and z 
    [chr(ord(i)+32) if 65<= ord(i) <= 90 
    # otherwise leave it as is 
    else i for i in a]) 
+0

これはそれです - 私の脳には最初の考えがあります:)彼が本当に欲しいものを説明できないかもしれませんか? –

+0

私は低い、感謝1については知らなかった – JShoe

0

Pythonはする機能を有しているがこの - str.lower()。 http://docs.python.org/library/stdtypes.html#str.lower

Pythonの文字列ライブラリには、ASCIIの小文字のリストがありますが、ASCII文字は実際にはint値であり、値を持つ各文字に32を加えることができます65と90の間(ASCIIでは65 = Aと90 = Zですが、Zとaの間には句読点の値がいくつかあります)リストを解析する必要はありません!あなたが(何らかの理由で)すべての小文字のインデックスをしたい場合は

>>> import string 
>>> myString = "abcDEfGHiJ" 
>>> myString.lower() 
'abcdefghij' 

:あなたは、単に文字列を小文字試みを作りたい場合は

1

>>> [pos for pos, let in enumerate(myString) if 65 <= ord(let) <= 90] 
[3, 4, 6, 7, 9] 
1

と仮定すると、これは、いくつかのではありません学問的な問題のような場合は、標準の文字列lower()メソッドを使用します。

x.lower()

それは運動であれば、それを変換するために32を追加している場合、あなたは、それがASCIIの大文字の範囲内だかどうかを確認、intに文字を反転させることができます。もちろんこれはASCII文字でのみ動作します。

のx = CHR(ORD(x)の32)ORD(x)の場合> 64とORD(x)は、他の< 91 Xは右ここにライブラリのドキュメント以外の言うことは他に何

わかりません: http://docs.python.org/library/stdtypes.html

また、実際には文字型がなく、数字と文字列だけがあります。文字列内の1つの文字で作業するときは、実際には長さ1の文字列です。また、文字列も忘れないでください不変です。

関連する問題