C'è un modo per convertire una stringa da maiuscole o anche minuscole in minuscole?
Ad esempio, "Chilometri" → "chilometri".
C'è un modo per convertire una stringa da maiuscole o anche minuscole in minuscole?
Ad esempio, "Chilometri" → "chilometri".
Risposte:
Usa .lower()- Ad esempio:
s = "Kilometer"
print(s.lower())
La documentazione ufficiale 2.x è qui:
La documentazione ufficiale 3.x è qui:str.lower()str.lower()
Come convertire una stringa in minuscolo in Python?
Esiste un modo per convertire una stringa immessa da un intero utente da maiuscola o anche da parte maiuscola a minuscola?
Ad esempio chilometri -> chilometri
Il modo canonico pitone di farlo è
>>> 'Kilometers'.lower()
'kilometers'
Tuttavia, se lo scopo è fare una corrispondenza senza distinzione tra maiuscole e minuscole, è necessario utilizzare la piegatura delle maiuscole:
>>> 'Kilometers'.casefold()
'kilometers'
Ecco perché:
>>> "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
Questo è un metodo str in Python 3, ma in Python 2, ti consigliamo di guardare PyICU o py2casefold - diverse risposte indirizzano questo qui .
Python 3 gestisce i letterali di stringhe semplici come unicode:
>>> string = 'Километр'
>>> string
'Километр'
>>> string.lower()
'километр'
In Python 2, il seguente, incollato in una shell, codifica il valore letterale come una stringa di byte, usando utf-8 .
E lowernon mappa alcuna modifica di cui i byte sarebbero a conoscenza, quindi otteniamo la stessa stringa.
>>> 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()
Километр
Negli script, Python si opporrà a byte non ascii (a partire da Python 2.5, e avvertimento in Python 2.4) che si trovano in una stringa senza codifica, poiché la codifica prevista sarebbe ambigua. Per ulteriori informazioni, consulta la procedura Unicode nei documenti e PEP 263
strletteraliQuindi abbiamo bisogno di una unicodestringa per gestire questa conversione, realizzata facilmente con una stringa unicode letterale, che si discambia con un uprefisso (e nota che il uprefisso funziona anche in Python 3):
>>> unicode_literal = u'Километр'
>>> print(unicode_literal.lower())
километр
Si noti che i byte sono completamente diversi dai strbyte: il carattere di escape è '\u'seguito dalla larghezza di 2 byte o dalla rappresentazione a 16 bit di queste unicodelettere:
>>> unicode_literal
u'\u041a\u0438\u043b\u043e\u043c\u0435\u0442\u0440'
>>> unicode_literal.lower()
u'\u043a\u0438\u043b\u043e\u043c\u0435\u0442\u0440'
Ora, se lo abbiamo solo nella forma di a str, dobbiamo convertirlo in unicode. Il tipo Unicode di Python è un formato di codifica universale che presenta molti vantaggi rispetto alla maggior parte delle altre codifiche. Possiamo usare il unicodecostruttore o il str.decodemetodo con il codec per convertire strin 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
Entrambi i metodi vengono convertiti nel tipo unicode e lo stesso di unicode_literal.
Si consiglia di lavorare sempre con il testo in Unicode .
Il software dovrebbe funzionare solo con stringhe Unicode internamente, convertendosi in una particolare codifica in uscita.
Tuttavia, per ripristinare il carattere minuscolo str, codificare utf-8nuovamente la stringa Python :
>>> 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')
километр
Quindi in Python 2, Unicode può codificare in stringhe Python e le stringhe Python possono decodificare nel tipo Unicode.
Con Python 2, questo non funziona con parole non inglesi in UTF-8. In questo caso decode('utf-8')può aiutare:
>>> s='Километр'
>>> print s.lower()
Километр
>>> print s.decode('utf-8').lower()
километр
decode('utf-8')non è solo non necessario in Python 3, ma causa un errore. ( rif ). Esempio: $python3; >>>s='Километр'; >>>print (s.lower); #result: километр >>>s.decode('utf-8').lower(); #result: ...AttributeError: 'str' object has no attribute 'decode'possiamo vedere un secondo modo per farlo, facendo riferimento alla risposta eccellente di @AaronHall. >>>s.casefold() #result: километр
Inoltre, puoi sovrascrivere alcune variabili:
s = input('UPPER CASE')
lower = s.lower()
Se lo usi in questo modo:
s = "Kilometer"
print(s.lower()) - kilometer
print(s) - Kilometer
Funzionerà proprio quando viene chiamato.
s=s.lower()è la strada da percorrere.
Non provarlo, assolutamente sconsigliato, non farlo:
import string
s='ABCD'
print(''.join([string.ascii_lowercase[string.ascii_uppercase.index(i)] for i in s]))
Produzione:
abcd
Dato che nessuno lo ha ancora scritto, puoi usarlo swapcase(quindi le lettere maiuscole diventeranno minuscole e viceversa) (e questo dovresti usare nei casi in cui ho appena menzionato (converti maiuscole / minuscole, inferiori a maiuscole)):
s='ABCD'
print(s.swapcase())
Produzione:
abcd
>>> "raison d'être".casefold(); "raison d'être"un'occhiata a questa risposta suunidecode