Kaip parašyti eilutę pythone?

Ar yra būdas paversti eilutę iš didžiųjų ar net didžiųjų raidžių į mažąsias?

Pavyzdžiui. Kilometrai → kilometrai.

1649 m
23 июля '11 в 6:08 2011-07-23 06:08 Benjaminas Diduras paklausė liepos 23 d., 11 val
@ 10 atsakymų
 s = "Kilometer" print(s.lower()) 

Oficiali dokumentacija str.lower() .

2570
23 июля '11 в 6:09 2011-07-23 06:09 atsakymą Petro Ivanovas pateikė liepos 23 d. 11 d. 06:09 2011-07-23 06:09

Naudojant „Python 2“, tai neveikia ne angliškiems žodžiams UTF-8. Tokiu atveju decode('utf-8') galite padėti:

border=0
 >>> s='Километр' >>> print s.lower() Километр >>> print s.decode('utf-8').lower() километр 
176
03 окт. Atsakymą pateikė Vladimiras Gorovoy 03 d. 2014-10-03 11:02 '14 at 11:02 2014-10-03 11:02

Kaip konvertuoti eilutę į mažas raides pythone?

Ar yra būdas konvertuoti visą vartotojo įvestą eilutę iš viršutinės ar net iš dalies didžiosios raidės į mažąsias?

Pavyzdžiui, kilometrai → kilometrai

Canonical Pythonic būdas tai padaryti

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

Tačiau, jei tikslas yra nesuderinamas su byla, turėtumėte naudoti registro raštą:

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

Štai kodėl:

 >>> "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 

Tai yra p metodas Python 3, bet Python 2, kurį norite pažvelgti į PyICU arba py2casefold - keli atsakymai išsprendžia šią problemą .

Unicode Python 3

„Python 3“ reguliarūs styginių literatūrai traktuojami kaip unikodas:

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

„Python 2“, reguliarūs styginių literalai yra baitai.

„Python 2“ sekantis kodas, įterptas į korpusą, koduoja kaip baitų eilutę, naudojant utf-8 .

Ir lower nerodomi jokie baitų žinomi pakeitimai, todėl gauname tą pačią eilutę.

 >>> 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“ scenarijuose jis prieštarauja ne ascii (pradedant nuo „Python 2.5“ ir įspėjimu „Python 2.4“) baitų eilutėje be nurodyto kodavimo, nes numatomas kodavimas bus dviprasmiškas. Daugiau apie tai žr. Dokumentuose ir PEP 263 pateiktose Unicode instrukcijose .

Naudokite Unicode literal, o ne str literal.

Taigi, mums reikia unicode eilutės, kad galėtume tvarkyti šią konversiją, kurią galima lengvai atlikti naudojant Unicode eilutę, kuri išskiria u prefiksą (ir atkreipkite dėmesį, kad u prefiksas veikia ir Python 3):

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

Atkreipkite dėmesį, kad baitai visiškai skiriasi nuo str baitų, o po to pabėgimo simbolis '\u' dviejų baitų plotis arba 16 bitų šių unicode simbolių vaizdavimas:

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

Dabar, jei mes turime tik formą str , turime ją konvertuoti į unicode . Unikodo tipas „Python“ yra universalus kodavimo formatas, turintis daug pranašumų, palyginti su daugeliu kitų kodų. Mes galime naudoti unicode konstruktorių arba str.decode metodą su kodeku, norėdami konvertuoti 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 

Abu metodai konvertuojami į Unicode tipą - ir kaip Unicode_literal.

Geriausia praktika Naudokite Unicode

Rekomenduojama visada dirbti su tekstu Unicode .

Programinė įranga turėtų veikti tik su Unicode eilutėmis, jas konvertuodama į konkretų išvesties kodą.

Jei reikia, gali sugrąžinti kodą

Tačiau norėdami grįžti į mažąsias raides į str tipą, vėl koduokite python eilutę į 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') километр 

Taigi, „Python 2“, „Unicode“ gali koduoti į „Python“ eilutes, o „Python“ eilutes galima dekoduoti į „Unicode“ tipą.

142
24 июля '15 в 1:40 2015-07-24 01:40 atsakymą pateikė Aaron Hall liepos 24 d., 15 val. 1:40 2015-07-24 01:40

Jūs galite padaryti tai, ką pasakė Petras , arba jei norite, kad vartotojas įvestų kažką, galite padaryti toliau pateiktą kodą:

 raw_input('Type Something').lower() 

Tada jis automatiškai konvertuoja įvestą eilutę mažosiomis raidėmis.

Pastaba: „ raw_input pervadintas į input „Python 3.x“ ir naujesnėje raw_input .

68
23 июля '11 в 7:34 2011-07-23 07:34 atsakymą pateikė vartotojo735977 liepos 23 d., 11 val

Be to, galite perrašyti kai kuriuos kintamuosius:

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

Jei naudojate šiuos veiksmus:

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

Jis veiks tik tada, kai bus pakviestas.

17
18 нояб. atsakymas duotas ergo lapkričio 18 d. 2013-11-18 21:35 '13, 9:35 2013-11-18 21:35

Nebandykite jo, visiškai nepatarkite, nedarykite to:

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

Išeiti:

 abcd 

Kadangi niekas to dar swapcase , galite naudoti swapcase (todėl didžiosios raidės bus swapcase ir atvirkščiai) (ir jūs turėtumėte tai naudoti, kai ką tik paminėjau (konvertuokite viršutinę ir apatinę, apačią į viršų)

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

Išeiti:

 abcd 
2
07 нояб. Atsakymas pateikiamas U9-Forward 07.11. 2018-11-07 08:27 '18, 08:27 am 2018-11-07 08:27

string.lower() naudojamas eilutės konvertavimui į eilutę.

pavyzdžiui:

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

Tokiu atveju visos abėcėlės bus pakeistos mažosiomis raidėmis.

0
16 июля '18 в 15:12 2018-07-16 15:12 atsakymą pateikė Zeeshan Adil, liepos 16 d. 18, 15:12 2018-07-16 15:12

Naudojant žemesnę () funkciją, tai bus jums triukas. Ex - jei naudojate eilutę „StackOverFlow“

 my_string = 'StackOverFlow' my_string_in_lowercase = my_string.lower() 
0
17 нояб. atsakymą pateikė Vaibhav Rai lapkričio 17 d. 2018-11-17 19:46 '18, 07:46 pm 2018-11-17 19:46

Kitas būdas tai padaryti. Alternatyva pagrindiniam metodui Lėtesnis

 string = "StackOverFlow" f = map(lambda x:chr(ord(x)+32) if 90>ord(x)>65 else x,list(string)) print("".join(f)) 
0
29 нояб. lapkričio 29 d. van der Zon Stef atsakymas 2018-11-29 17:41 '18, 18:41 pm 2018-11-29 17:41

Jei visas tekstas yra didžiosios raidės, pavyzdžiui, „KILOMETER“, ir norite, kad pirmasis simbolis būtų maža, rašykite

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

Bet norėdami įvesti visą eilutę mažosiomis raidėmis

 text = "KILOMETER" text = text.lower() print(text) 
-2
01 марта '17 в 1:49 2017-03-01 01:49 atsakymas pateikiamas „ Supercolbat“ kovo 1 d. 17 d. 1:49 2017-03-01 01:49