Jak przekonwertować ciąg znaków na małe litery w Pythonie
Czy istnieje sposób na konwersję łańcucha z wielkich liter,a nawet części wielkich liter na małe?
Np. kilometry --> kilometry.
7 answers
s = "Kilometer"
print(s.lower())
Oficjalna dokumentacja jest str.lower()
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-30 21:52:24
W Pythonie 2, to nie działa dla nie - angielskich słów w UTF-8. W tym przypadku decode('utf-8')
może pomóc:
>>> s='Километр'
>>> print s.lower()
Километр
>>> print s.decode('utf-8').lower()
километр
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-21 11:41:57
Jak przekonwertować string na małe litery w Pythonie?
Czy jest jakiś sposób na przekonwertowanie całego wprowadzonego przez użytkownika ciągu znaków z wielkich liter lub nawet części wielkich liter na małe litery?
Np. kilometry -- > kilometry
Kanonicznym sposobem na to jest
>>> 'Kilometers'.lower()
'kilometers'
Jednak, jeśli celem jest dopasowanie nieczułych wielkości liter, należy użyć case-folding:
>>> 'Kilometers'.casefold()
'kilometers'
Oto dlaczego:
>>> "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
Jest to metoda str w Pythonie 3, ale w Pythonie 2, będziesz chciał spojrzeć na PyICU lub py2casefold- kilka odpowiedzi odnosi się do tego tutaj .
Unicode Python 3
Python 3 obsługuje unicode jako zwykłe ciągi znaków:
>>> string = 'Километр'
>>> string
'Километр'
>>> string.lower()
'километр'
Unicode Python 2
Ale Python 2 nie, poniższy, wklejony do powłoki, koduje literał jako ciąg bajtów, używając utf-8
.
I lower
nie mapuje żadnych zmian, które natywne Obiekty Unicode byłyby świadome, więc otrzymujemy ten sam sznurek.
>>> 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()
Километр
W skryptach, Python będzie sprzeciwiał się nie-ascii (od Pythona 2.5, A ostrzeżenie w Pythonie 2.4) bajtów będących w łańcuchu znaków bez podanego kodowania, ponieważ zamierzone kodowanie byłoby niejednoznaczne. Aby uzyskać więcej informacji, zobacz instrukcje Unicode w docs i PEP 263
Używaj literałów Unicode, Nie str
literały
Więc potrzebujemy unicode
ciąg znaków, aby obsłużyć tę konwersję, wykonaną łatwo za pomocą literału unicode:
>>> unicode_literal = u'Километр'
>>> print unicode_literal.lower()
километр
Uwaga że bajty są zupełnie inne od str
bajtów - znakiem escape jest '\u'
, po którym następuje 2-bajtowa szerokość lub 16-bitowa reprezentacja tych unicode
liter:
>>> unicode_literal
u'\u041a\u0438\u043b\u043e\u043c\u0435\u0442\u0440'
>>> unicode_literal.lower()
u'\u043a\u0438\u043b\u043e\u043c\u0435\u0442\u0440'
Teraz, jeśli mamy go tylko w formie str
, musimy przekształcić go w unicode
. Typ Unicode Pythona jest uniwersalnym formatem kodowania, który ma wiele zalet w stosunku do większości innych kodowań. Możemy użyć konstruktora unicode
lub metody str.decode
z kodekiem, aby przekonwertować str
na 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
Obie metody konwertują na typ unicode - i taki sam jak unicode_literal.
Najlepsza praktyka, użyj Unicode
Zaleca się, aby zawsze pracować z tekstem w Unicode .
Oprogramowanie powinno działać tylko wewnętrznie z łańcuchami Unicode, konwertując je do określonego kodowania na wyjściu.
Może kodować z powrotem, gdy jest to konieczne
Jednak, aby odzyskać małe litery w typie str
, Zakoduj łańcuch Pythona do utf-8
jeszcze raz:
>>> 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')
километр
Więc w Pythonie 2, Unicode może kodować do ciągów Pythona, a ciągi Pythona mogą dekodować do typu Unicode.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-11 16:39:59
Możesz zrobić to, co powiedział Peter , lub jeśli chcesz, aby użytkownik coś wprowadził, możesz wykonać poniższy kod:
raw_input('Type Something').lower()
Zostanie automatycznie przekonwertowany napis na małe litery.
Uwaga: raw_input
został przemianowany na input
w Pythonie 3.x i wyżej.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-04 10:47:45
Możesz także nadpisać niektóre zmienne:
s = input('UPPER CASE')
lower = s.lower()
Jeśli używasz w ten sposób:
s = "Kilometer"
print(s.lower()) - kilometer
print(s) - Kilometer
Będzie działać tylko wtedy, gdy zostanie wywołana.Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-08 07:27:35
string.lower()
służy do zamiany łańcucha znaków na małe litery.
Na przykład:
word = "Turn Th!S !nt0 a L0w3rCas3! $string"
print(word.lower())
W tym przypadku wszystkie alfabety zostaną przekonwertowane na małe litery.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-16 12:12:09
Jeśli cały tekst jest pisany wielkimi literami jak "kilometr", a chcesz tylko, aby pierwszy znak był pisany małymi literami, wykonaj
text = "KILOMETER"
result = text[:1] + text[1:].lower()
print(result)
Ale aby zapisać cały łańcuch, wykonaj
text = "KILOMETER"
text = text.lower()
print(text)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-01 17:17:50