Pertanyaan Bagaimana mengkonversi string ke huruf kecil dengan Python


Apakah ada cara untuk mengubah string dari huruf besar, atau bahkan sebagian huruf besar ke huruf kecil?

Misalnya. Kilometer -> kilometer.


1480
2017-07-23 03:08


asal


Jawaban:


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

Dokumentasi resmi adalah str.lower().


2325
2017-07-23 03:09



Dengan Python 2, ini tidak berfungsi untuk kata-kata non-Inggris dalam UTF-8. Pada kasus ini decode('utf-8') bisa membantu:

>>> s='Километр'
>>> print s.lower()
Километр
>>> print s.decode('utf-8').lower()
километр

158
2017-10-03 08:02



Bagaimana cara mengubah string menjadi huruf kecil dengan Python?

Apakah ada cara untuk mengonversi seluruh string yang dimasukkan pengguna dari huruf besar, atau bahkan sebagian huruf besar ke huruf kecil?

Misalnya. Kilometer -> kilometer

Cara Pythonic kanonik melakukan ini

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

Namun, jika tujuannya adalah untuk melakukan pencocokan tidak sensitif huruf, Anda harus menggunakan pelipatan huruf besar kecil:

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

Inilah alasannya:

>>> "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 metode str dalam Python 3, tetapi dengan Python 2, Anda akan ingin melihat PyICU atau py2casefold - beberapa jawaban menjawab ini di sini.

Unicode Python 3

Python 3 menangani unicode sebagai string biasa:

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

Unicode Python 2

Tapi Python 2 tidak, di bawah ini, ditempelkan ke shell, mengkodekan literal sebagai string byte, menggunakan utf-8.

Dan lower tidak memetakan perubahan apa pun yang akan diketahui oleh objek Unicode asli, jadi kami 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 skrip, Python akan menolak non-ascii (seperti Python 2.5, dan peringatan dalam Python 2.4) byte berada dalam string tanpa pengkodean yang diberikan, karena pengkodean yang dimaksudkan akan ambigu. Untuk lebih lanjut tentang itu, lihat cara-cara Unicode di dokumen dan PEP 263

Gunakan literal Unicode, bukan str literal

Jadi kita butuh a unicode string untuk menangani konversi ini, diselesaikan dengan mudah dengan literal unicode:

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

Perhatikan bahwa byte benar-benar berbeda dari str byte - karakter pelolosan adalah '\u' diikuti oleh lebar 2-byte, atau 16 bit representasi ini unicode huruf:

>>> 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 memilikinya dalam bentuk a str, kita perlu mengubahnya menjadi unicode. Jenis Unicode Python adalah format enkode universal yang memiliki banyak keuntungan relatif terhadap kebanyakan pengkodean lainnya. Kami 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 dikonversi ke jenis unicode - dan sama dengan unicode_literal.

Praktik Terbaik, gunakan Unicode

Dianjurkan agar Anda selalu bekerja dengan teks dalam Unicode.

Perangkat lunak seharusnya hanya bekerja dengan string Unicode secara internal, mengkonversi ke pengkodean tertentu pada output.

Dapat mengkodekan kembali bila perlu

Namun, untuk mengembalikan huruf kecil ke dalam tipe str, mengenkode string python ke 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 dengan Python 2, Unicode dapat menyandikan ke string Python, dan string Python dapat memecahkan kode ke jenis Unicode.


104
2017-07-23 22:40



Anda bisa melakukan apa Kata Petrus, atau jika Anda ingin pengguna memasukkan sesuatu, Anda dapat melakukan kode di bawah ini:

raw_input('Type Something').lower()

Ini kemudian akan secara otomatis mengkonversi string yang mereka ketik ke dalam huruf kecil.

catatan: raw_inputdiganti namanya menjadi input dengan Python 3.x dan di atasnya.


70
2017-07-23 04:34



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 berfungsi saat dipanggil.


17
2017-11-18 18:35



string.lower() digunakan untuk mengubah string menjadi string huruf kecil.

sebagai contoh:

word = "Turn Th!S !nt0 a L0w3rCas3! $string"
print(word.lower())

Dalam hal ini, semua alfabet akan dikonversi menjadi huruf kecil huruf kecil.


0
2017-07-16 12:12



Jika seluruh teks adalah huruf besar seperti "KILOMETER", dan Anda hanya ingin karakter pertama diturunkan, lalu lakukan

text = "KILOMETER"
result = text[:1] + text[1:].lower() 
print(result)

Tetapi untuk menurunkan seluruh string, lakukan

text = "KILOMETER"
text = text.lower()
print(text)

-1
2018-02-28 22:49