Bir dizeyi büyük harften, hatta kısmen büyük harfe küçük harfe dönüştürmenin bir yolu var mı?
Örneğin, "Kilometre" → "kilometre".
Bir dizeyi büyük harften, hatta kısmen büyük harfe küçük harfe dönüştürmenin bir yolu var mı?
Örneğin, "Kilometre" → "kilometre".
Yanıtlar:
Kullan .lower()- Örneğin:
s = "Kilometer"
print(s.lower())
Resmi 2.x belgeleri burada:
Resmi 3.x belgeleri burada:str.lower()str.lower()
Nasıl dize Python küçük harf dönüştürmek için?
Kullanıcının girdiği dizenin tamamını büyük harften, hatta kısmen büyük harfe küçük harfe dönüştürmenin herhangi bir yolu var mı?
Eg Kilometre -> kilometre
Bunu yapmanın kanonik Pythonic yolu
>>> 'Kilometers'.lower()
'kilometers'
Ancak, amaç büyük / küçük harfe duyarlı olmayan eşleştirme yapmaksa, büyük / küçük harf katlama kullanmalısınız:
>>> 'Kilometers'.casefold()
'kilometers'
İşte nedeni:
>>> "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
Bu Python 3'te bir str yöntemidir, ancak Python 2'de PyICU veya py2casefold'a bakmak isteyeceksiniz - birkaç cevap burada ele almaktadır .
Python 3 düz dize değişmezlerini unicode olarak işler:
>>> string = 'Километр'
>>> string
'Километр'
>>> string.lower()
'километр'
Python 2'de, bir kabuğa yapıştırılan aşağıdaki metin, değişmezi kullanarak bir bayt dizisi olarak kodlar utf-8.
Baytların lowerbileceği hiçbir değişikliği haritalamaz, bu yüzden aynı dizeyi alırız.
>>> 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()
Километр
Komut dosyalarında Python, amaçlanan kodlama belirsiz olacağından, kodlama yapılmayan bir dizede olduğu gibi ascii olmayanlara (Python 2.5 ve Python 2.4'te uyarı) itiraz eder. Bununla ilgili daha fazla bilgi için dokümanlardaki Unicode nasıl yapılır bölümüne ve PEP 263'e bakın
strdeğişmezlerini kullanmaBu nedenle unicode, bir uönekle net olmayan bir unicode dize değişmeziyle kolayca gerçekleştirilen bu dönüşümü işlemek için bir dizeye ihtiyacımız var (ve uönekin Python 3'te de çalıştığını unutmayın ):
>>> unicode_literal = u'Километр'
>>> print(unicode_literal.lower())
километр
Baytların baytlardan tamamen farklı olduğuna dikkat edin str- kaçış karakterinden '\u'sonra 2 unicodeharflik genişlik veya bu harflerin 16 bitlik gösterimi gelir :
>>> unicode_literal
u'\u041a\u0438\u043b\u043e\u043c\u0435\u0442\u0440'
>>> unicode_literal.lower()
u'\u043a\u0438\u043b\u043e\u043c\u0435\u0442\u0440'
Şimdi sadece a şeklinde varsa, onu strdönüştürmemiz gerekir unicode. Python'un Unicode tipi, diğer çoğu kodlamaya göre birçok avantaja sahip evrensel bir kodlama formatıdır . Bunu dönüştürmek için yapıcıyı unicodeveya str.decodeyöntemi codec bileşeni ile strkullanabiliriz 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
Her iki yöntem de unicode türüne dönüştürülür ve unicode_literal ile aynıdır.
Unicode'da her zaman metinle çalışmanız önerilir .
Yazılım, yalnızca dahili olarak Unicode dizeleriyle çalışarak çıktıdaki belirli bir kodlamaya dönüştürmelidir.
Ancak, küçük harfleri tekrar yazmak striçin python dizesini utf-8tekrar kodlayın :
>>> 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')
километр
Python 2'de, Unicode Python dizelerine kodlayabilir ve Python dizeleri Unicode türüne kod çözebilir.
Python 2 ile bu, UTF-8'deki İngilizce olmayan kelimeler için çalışmaz. Bu durumda decode('utf-8')yardımcı olabilir:
>>> s='Километр'
>>> print s.lower()
Километр
>>> print s.decode('utf-8').lower()
километр
decode('utf-8')sadece Python 3'te gereksiz olmadığını, aynı zamanda bir hataya neden olduğunu söyleyerek biraz daha açık olmalıyız . ( ref ). Örnek: $python3; >>>s='Километр'; >>>print (s.lower); #result: километр >>>s.decode('utf-8').lower(); #result: ...AttributeError: 'str' object has no attribute 'decode'@AaronHall'ın mükemmel cevabına atıfta bulunarak bunu yapmanın ikinci bir yolunu görebiliriz. >>>s.casefold() #result: километр
Ayrıca, bazı değişkenlerin üzerine yazabilirsiniz:
s = input('UPPER CASE')
lower = s.lower()
Eğer böyle kullanırsanız:
s = "Kilometer"
print(s.lower()) - kilometer
print(s) - Kilometer
Sadece çağrıldığında çalışır.
s=s.lower()gitmek için bir yoldur.
Bunu denemeyin, tamamen tavsiye etmeyin, bunu yapma:
import string
s='ABCD'
print(''.join([string.ascii_lowercase[string.ascii_uppercase.index(i)] for i in s]))
Çıktı:
abcd
Henüz kimse yazamadığı için kullanabilirsiniz swapcase(böylece büyük harfler küçük harf olur ve tersi de geçerlidir) (ve bu sadece az önce bahsettiğim durumlarda kullanmalısınız (yukarıdan aşağıya, aşağıdan yukarıya dönüştür)):
s='ABCD'
print(s.swapcase())
Çıktı:
abcd
>>> "raison d'être".casefold(); "raison d'être"Çıkış Bu cevabı hakkındaunidecode