Jak píše Tomáš. Jakmile si začneš s texty s diakritikou, vždycky je lepší<br />
používat Unicode řetězce (i když je otrava psát před literály u a dávat<br />
si na to pořád pozor. Z textových souborů v UTF-8 bys to měl načítat<br />
přes modul codecs (codecs.open(filename, 'r', 'utf-8') -- aspoň si zvykneš<br />
na to, že k textovému souboru vždycky patří i údaj o kódování. V Pythonu 3<br />
už je to nutnost.<br />
<br />
K tomu prvnímu je to tak, jak píše Petr Messner. Funkce repr() (nebo metoda,<br />
kterou tato funkce volá) má za úkol vytvořit textovou reprezentaci, která (když<br />
se vloží do zrojového textu) zajistí vytvoření objektu se stejnou hodnotou. A protože<br />
řetězce nebo unicode řetězce mohou být v souborech uloženy v různém kódování<br />
a podle toho by to mělo vypadat pokaždé jinak, vygeneruje tvar, který používá<br />
jen ASCII znaky -- i za cenu, že to není čitelné.<br />
<br />
Doporučuju si přečíst Kapitolu 4. Řetězce v "Ponořme se do Pythonu 3"<br />
http://diveintopython3.py.cz/strings.html<br />
<br />
Problém posloupností bajtů vs. abstraktních řetězců je tam vysvětlen<br />
celkem stručně.<br />
<br />
Měj se fajn,<br />
Petr<br />
<br />
______________________________________________________________<br />
> Od: "Tomáš Drenčák"<br />
> Komu: Konference PyCZ <python@py.cz><br />
> Datum: 07.06.2011 10:33<br />
> Předmět: Re: [python]Tisk unicode řetězce a tisk seznamu unicode řetězců<br />
><br />
Neviem to teraz overit, no myslim ze pred unicode string ma ist u, teda takto:
<div>seznam = [ u"žluťoučký kůň", u"úpěl ďábelské ódy" ]<br />
<br />
<div class="gmail_quote">2011/6/7 David Rohlede<br class="gmail_quote" />
<blockquote class="gmail_quote" style="margin: 0 0 0 .8ex; border-left: 1px #ccc solid; padding-left: 1ex;">Ahoj,<br />
<br />
neví někdo, proč se následující příklad chová následovně?<br />
<br />
#!/usr/bin/env python<br />
# -*- coding: utf-8 -*-<br />
<br />
seznam = [ "žluťoučký kůň", "úpěl ďábelské ódy" ]<br />
<br />
print seznam<br />
<br />
for i in seznam:<br />
print i<br />
<br />
<br />
['xc5xbeluxc5xa5ouxc4x8dkxc3xbd kxc5xafxc5x88', 'xc3xbap<br />
xc4x9bl xc4x8fxc3xa1belskxc3xa9 xc3xb3dy']<br />
žluťoučký kůň<br />
úpěl ďábelské ódy<br />
<br />
Tj. jednou to vytiskne dost nečitelně a podruhé správně čitelně (oboje<br />
je asi správně)?<br />
<br />
zkoušel jsem třeba i<br />
<br />
print [i.encode("utf-8") for i in seznam]<br />
<br />
ale taky nic.<br />
<br />
Dík<br />
<br />
David</blockquote>
</div>
</div>