Apakah ada cara untuk mengkonversi string dari huruf besar, atau bahkan bagian huruf besar ke huruf kecil?
Misalnya, "Kilometer" → "kilometer".
Gunakan .lebih rendah()
- misalnya:
s = "Kilometer"
print(s.lower())
Resmi 2.x dokumentasi berikut ini: str.lebih rendah()
Resmi 3.x dokumentasi berikut ini: str.lebih rendah()
Cara untuk mengkonversi string ke huruf kecil di Python?
Apakah ada cara untuk mengkonversi seluruh pengguna diinput string dari huruf besar, atau bahkan bagian huruf besar ke huruf kecil?
E. g. Kilometer --> kilometer
Kanonik Pythonic cara untuk melakukan ini adalah
>>> 'Kilometers'.lower()
'kilometers'
Namun, jika tujuannya adalah untuk melakukan pencocokan case sensitive, anda harus menggunakan hal-lipat:
>>> 'Kilometers'.casefold()
'kilometers'
Berikut ini's mengapa:
>>> "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
Ini adalah str metode di Python 3, tapi di Python 2, anda'll ingin melihat PyICU atau py2casefold - beberapa jawaban alamat ini di sini.
Python 3 menangani polos string literal sebagai unicode:
>>> string = 'Километр'
>>> string
'Километр'
>>> string.lower()
'километр'
Di Python 2, di bawah ini, disisipkan ke dalam sebuah shell, encode literal string byte, dengan menggunakan utf-8
.
Dan rendah
doesn't peta setiap perubahan yang bytes akan sadar, sehingga kita mendapatkan string yang sama.
>>> 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()
Километр
Dalam script, Python akan keberatan untuk non-ascii (seperti Python 2.5, dan peringatan di Python 2.4) byte berada di sebuah string dengan pengkodean tidak diberikan, karena dimaksudkan coding akan menjadi ambigu. Untuk lebih lanjut, lihat Unicode bagaimana-untuk di docs dan PEP 263
str
literalJadi kita perlu unicode
string untuk menangani konversi ini, dicapai dengan mudah dengan unicode string literal, yang disambiguates dengan u
awalan (dan catatan u
awalan juga bekerja di Python 3):
>>> unicode_literal = u'Километр'
>>> print(unicode_literal.lower())
километр
Perhatikan bahwa byte yang benar-benar berbeda dari str
bytes - the escape character is '\u'
diikuti oleh 2-byte lebar, atau 16 bit representasi ini unicode
letters:
>>> unicode_literal
u'\u041a\u0438\u043b\u043e\u043c\u0435\u0442\u0440'
>>> unicode_literal.lower()
u'\u043a\u0438\u043b\u043e\u043c\u0435\u0442\u0440'
Sekarang jika kita hanya memiliki dalam bentuk str
, kita perlu mengubahnya menjadi unicode
. Python's Unicode jenis universal format encoding yang memiliki banyak keuntungan relatif paling pengkodean lainnya. Kita bisa menggunakan unicode
konstruktor atau str.decode
metode dengan codec untuk mengkonversi str
untuk 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
Kedua metode tersebut dikonversi ke tipe unicode - dan sama seperti unicode_literal.
Dianjurkan bahwa anda selalu bekerja dengan teks dalam Unicode]7.
Software hanya harus bekerja dengan string Unicode secara internal, mengkonversi ke pengkodean tertentu pada output.
Namun, untuk mendapatkan huruf kecil kembali dalam jenis str
, mengkodekan string python untuk utf-8
lagi:
>>> 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')
километр
Jadi dalam Python 2, Unicode dapat menyandikan ke string Python dan Python dapat men-decode string ke tipe Unicode.
Dengan Python 2, ini doesn't bekerja untuk non-kata-kata bahasa inggris dalam UTF-8. Dalam hal ini decode('utf-8')
dapat membantu:
>>> s='Километр'
>>> print s.lower()
Километр
>>> print s.decode('utf-8').lower()
километр
Juga, anda dapat menimpa beberapa variabel:
s = input('UPPER CASE')
lower = s.lower()
Jika anda menggunakan seperti ini:
s = "Kilometer"
print(s.lower()) - kilometer
print(s) - Kilometer
Ini akan bekerja hanya ketika dipanggil.
Don't coba ini, benar-benar tidak merekomendasikan, don't melakukan hal ini:
import string
s='ABCD'
print(''.join([string.ascii_lowercase[string.ascii_uppercase.index(i)] for i in s]))
Output:
abcd
Karena tidak ada yang menulisnya, namun anda dapat menggunakan swapcase
(jadi huruf besar menjadi huruf kecil, dan sebaliknya) (dan ini salah satu yang harus digunakan dalam kasus-kasus di mana aku hanya disebutkan (mengkonversi atas ke bawah, bawah ke atas)):
s='ABCD'
print(s.swapcase())
Output:
abcd