[python] Tisk unicode řetězce a tisk seznamu unicode řetězců

David Rohleder davro na ics.muni.cz
Úterý Červen 7 18:13:23 CEST 2011


Petr Přikryl píše v Út 07. 06. 2011 v 14:07 +0200:
> > "David Rohleder" 
> > Petr Přikryl píše
>  > > Jak píše Tomáš. Jakmile si začneš s texty s diakritikou, 
>  > > vždycky je lepší používat Unicode řetězce (i když je otrava
> > > psát před literály u a dávat [...]
>  > 
>  > a není ta definice na začátku
>  > # -*- coding: utf-8 -*-
>  > ekvivalentní u"řetězec"?
>  
> Není. Ta definice na začátku souboru jen říká interpretu, jak
> má interpretovat znaky ve zdrojovém textu. Neříká nic dalšího
> o tom, co se s nimi děje u starých řetězců (bez u na začátku). 
> Pokud je zdrojový text v utf-8, pak i v paměti bude v řetězcovém
> objektu stejná posloupnost bajtů, jako v souboru. V řetězcovém
> objektu ale není nikde informace o kódování -- ta existuje
> mimo objekty a má charakter dohody. (Každý soubor může 
> používat jiný způsob kódování. Nevím o způsobu, jak by se dalo
> v pythonovském programu zpětně zjistit, v jakém kódování 
> byl uveden zdrojový text -- ale možná něco takového je.)
> 
> Teprve když použiteš unicode řetězec, přehrká interpret
> při překladu posloupnost bajtů z literálu za pomocí informace
> z # -*- coding: ... -*- na posloupnost abstraktních unicode znaků.


Když už jsme u těch řetězců: jak se udělá raw unicode řetězec, tj.
interpret neinterpretuje uvnitř? Generuju si latexový dokument a on se
přirozeně vzteká na:

hlavicka = ur"""
\documentclass[a4,landscape]{article}
\usepackage{graphicx}
\usepackage[czech]{babel}
\usepackage[utf8]{inputenc}
\begin{document}
\thispagestyle{empty}

"""

print hlavicka

SyntaxError: (unicode error) 'rawunicodeescape' codec can't decode bytes
in position 39-40: truncated \uXXXX






Další informace o konferenci Python