2385

文字列を大文字から、または一部大文字から小文字に変換する方法はありますか?

たとえば、「キロメーター」→「キロメーター」。

4

10 に答える 10

3456

使用.lower()-例:

s = "Kilometer"
print(s.lower())

公式の2.xドキュメントはここにあります: 公式の3.xドキュメントはここにあります:str.lower()
str.lower()

于 2011-07-23T03:09:58.443 に答える
375

Pythonで文字列を小文字に変換する方法は?

ユーザーが入力した文字列全体を大文字から、または一部を大文字から小文字に変換する方法はありますか?

例:キロメートル->キロメートル

これを行うための標準的なPythonicの方法は

>>> 'Kilometers'.lower()
'kilometers'

ただし、大文字と小文字を区別しないマッチングを行うことが目的の場合は、大文字と小文字を区別しないようにする必要があります。

>>> 'Kilometers'.casefold()
'kilometers'

理由は次のとおりです。

>>> "Maße".casefold()
'masse'
>>> "Maße".lower()
'maße'
>>> "MASSE" == "Maße"
False
>>> "MASSE".lower() == "Maße".lower()
False
>>> "MASSE".casefold() == "Maße".casefold()
True

これはPython3のstrメソッドですが、Python 2では、PyICUまたはpy2casefoldを確認する必要があります。いくつかの回答がここでこれに対処しています

Unicode Python 3

Python 3は、プレーン文字列リテラルをUnicodeとして処理します。

>>> string = 'Километр'
>>> string
'Километр'
>>> string.lower()
'километр'

Python 2、プレーン文字列リテラルはバイトです

Python 2では、シェルに貼り付けられた以下は、を使用してリテラルをバイトの文字列としてエンコードしますutf-8

またlower、バイトが認識する変更をマップしないため、同じ文字列を取得します。

>>> string = 'Километр'
>>> string
'\xd0\x9a\xd0\xb8\xd0\xbb\xd0\xbe\xd0\xbc\xd0\xb5\xd1\x82\xd1\x80'
>>> string.lower()
'\xd0\x9a\xd0\xb8\xd0\xbb\xd0\xbe\xd0\xbc\xd0\xb5\xd1\x82\xd1\x80'
>>> print string.lower()
Километр

スクリプトでは、意図されたコーディングがあいまいになるため、Pythonは非ASCII(Python 2.5以降、Python 2.4では警告)バイトがエンコードされていない文字列に含まれることに反対します。詳細については、ドキュメントのUnicodeハウツーとPEP263を参照しください

リテラルではなく、Unicodeリテラルを使用strする

したがってunicode、この変換を処理するための文字列が必要です。これは、プレフィックスで明確にするユニコード文字列リテラルで簡単に実行できます(プレフィックスはPython 3でも機能するuことに注意してください)。u

>>> unicode_literal = u'Километр'
>>> print(unicode_literal.lower())
километр

バイトはバイトとは完全に異なることに注意してくださいstr。エスケープ文字の後には2バイト幅、つまりこれらの文字'\u'の16ビット表現が続きます。unicode

>>> unicode_literal
u'\u041a\u0438\u043b\u043e\u043c\u0435\u0442\u0440'
>>> unicode_literal.lower()
u'\u043a\u0438\u043b\u043e\u043c\u0435\u0442\u0440'

の形式でしか持っていない場合は、strに変換する必要がありunicodeます。PythonのUnicodeタイプは、他のほとんどのエンコーディングと比較して多くの利点があるユニバーサルエンコーディングフォーマットです。unicodeコンストラクターまたはstr.decodeコーデックでメソッドを使用して、を次のように変換できstrますunicode

>>> unicode_from_string = unicode(string, 'utf-8') # "encoding" unicode from string
>>> print(unicode_from_string.lower())
километр
>>> string_to_unicode = string.decode('utf-8') 
>>> print(string_to_unicode.lower())
километр
>>> unicode_from_string == string_to_unicode == unicode_literal
True

どちらの方法もユニコードタイプに変換されます-そしてunicode_literalと同じです。

ベストプラクティス、Unicodeを使用する

常にUnicodeのテキストで作業することをお勧めします。

ソフトウェアは内部でUnicode文字列のみを処理し、出力時に特定のエンコーディングに変換する必要があります。

必要に応じてエンコードバックできます

ただし、小文字をタイプに戻すにはstr、Python文字列を次のようにutf-8再度エンコードします。

>>> print string
Километр
>>> string
'\xd0\x9a\xd0\xb8\xd0\xbb\xd0\xbe\xd0\xbc\xd0\xb5\xd1\x82\xd1\x80'
>>> string.decode('utf-8')
u'\u041a\u0438\u043b\u043e\u043c\u0435\u0442\u0440'
>>> string.decode('utf-8').lower()
u'\u043a\u0438\u043b\u043e\u043c\u0435\u0442\u0440'
>>> string.decode('utf-8').lower().encode('utf-8')
'\xd0\xba\xd0\xb8\xd0\xbb\xd0\xbe\xd0\xbc\xd0\xb5\xd1\x82\xd1\x80'
>>> print string.decode('utf-8').lower().encode('utf-8')
километр

したがって、Python 2では、UnicodeはPython文字列にエンコードでき、Python文字列はUnicodeタイプにデコードできます。

于 2015-07-23T22:40:45.050 に答える
209

Python 2では、これはUTF-8の英語以外の単語では機能しません。この場合、次のdecode('utf-8')ことが役立ちます。

>>> s='Километр'
>>> print s.lower()
Километр
>>> print s.decode('utf-8').lower()
километр
于 2014-10-03T08:02:17.917 に答える
24

また、いくつかの変数を上書きできます。

s = input('UPPER CASE')
lower = s.lower()

このように使用する場合:

s = "Kilometer"
print(s.lower())     - kilometer
print(s)             - Kilometer

呼び出されたときに機能します。

于 2013-11-18T18:35:07.020 に答える
7

組み込みの文字列メソッドlowerを使用してそれを行うことができます

例えば:

>>> s = "Kilometres"
>>> s.lower()
'kilometres'
于 2021-09-19T14:16:47.503 に答える
5

これを試さないでください、まったくお勧めしません、これをしないでください:

import string
s='ABCD'
print(''.join([string.ascii_lowercase[string.ascii_uppercase.index(i)] for i in s]))

出力:

abcd

まだ誰も書いていませんswapcaseので、使用できます(大文字は小文字になり、その逆も同様です)(これは、先ほど説明した場合に使用する必要があります(大文字から小文字、小文字から大文字に変換)):

s='ABCD'
print(s.swapcase())

出力:

abcd
于 2018-11-07T05:27:18.030 に答える
5

それを行う最も簡単な方法は次のとおりです。

i = "Kilometers"
print(i.lower())
于 2021-04-09T14:59:05.357 に答える
2

組み込みのlower()関数を使用するだけです。

すなわち:

mystring = 'Hello!'
lowercase = mystring.lower()
print(lowercase)

これは戻りmyselfますが、小文字です。

于 2022-02-14T04:16:11.177 に答える
1

実装されたlower()メソッドを使用するだけです。

x = "TealCode"
print(x.lower())
#Output tealcode

ここでTealCodeについても説明します。

于 2021-11-22T19:58:00.767 に答える
0

文字列内のすべての文字が小文字であるかどうかを最初に確認する必要がある場合は、次を使用します。

string.islower()

すべての文字が小文字の場合はTrueを返し、それ以外の場合はFalseを返します。

使用できるのは次のとおりです。

s = "Kilometer"
if not s.islower():
    s.lower()
于 2022-02-11T13:24:48.483 に答える