Python 2'de print
bir işlevdir, bir işlev değil. Burada tuple yazıyorsunuz. kaldırarak tek tek öğeleri yazdır (..)
:
>>> euro = u'\u20AC'
>>> euroUTF8 = euro.encode('utf-8')
>>> print euroUTF8, type(euroUTF8), len(euroUTF8)
€ <type 'str'> 3
Şimdi stdout'a dizeleri olarak yazılır 3 ayrı nesneler olsun; terminalim, UTF-8 olarak yazılan herhangi bir şeyi yorumlayacak şekilde yapılandırılmış olur, bu nedenle baytlar, görüntülenen €
Euro sembolünün doğru bir şekilde sonuçlanmasını sağlar.
\x<hh>
dizileri Python dize kaçış dizileri (reference documentation bakın); Bunlar, ASCII olmayan, yazdırılamayan baytlar içeren bir dizeye uygulanan repr()
için varsayılan çıktılardır. interaktif bir tercüman değeri yankılanan zaman aynı şeyi görürsünüz:
>>> euroUTF8
'\xe2\x82\xac'
>>> euroUTF8[0]
'\xe2'
>>> euroUTF8[1]
'\x82'
>>> euroUTF8[2]
'\xac'
Bunlar ASCII güvenli ayıklama çıkışı sağlamak. Tüm Python standart kütüphane kaplarının içeriği bu formatı kullanır; listeler, tuples ve sözlükler dahil.
Eğer bu değerleri oluşturan bit görmek ord()
fonksiyonunu kullanarak bir tam sayıya her byte dönüştürmek biçimlendirmek istiyorsanız, o zaman ikili olarak tamsayı biçimlendirmek:
>>> ' '.join([format(ord(b), '08b') for b in euroUTF8])
'11100010 10000010 10101100'