[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