[python] Čtení z Excelu v češtině

Pavel Kosina geon na post.cz
Pondělí Květen 29 17:11:06 CEST 2006


aha, tak to již je asi (určitě) unicode řetězec. ukázka:

# -*- coding: cp1250 -*-
x=u"Žluťoučký kůň pěl ďábelské ódy."

# print unicode(x,"cp852") - hází chybu TypeError: decoding Unicode is 
not supported
print x.encode("cp852") - vytištěno správně

Takže ty ho musíš encodovat. Tu chybu, cos psal předtím, ta 
pravděpodobně vznikla, když jsi zkoušel převést znak v unicode (který 
byl v Excelu) na to tvoje kodovani, v kterém nebyl odpovidajíci 
ekvivalent. TO by se mělo dát řešit dalším parametrem errors v .encode() -

*encode*( 	[encoding[,errors]])

    Return an encoded version of the string. Default encoding is the
    current default string encoding. errors may be given to set a
    different error handling scheme. The default for errors is
    |'strict'|, meaning that encoding errors raise a UnicodeError. Other
    possible values are |'ignore'|, |'replace'|, |'xmlcharrefreplace'|,
    |'backslashreplace'| and any other name registered via
    codecs.register_error. For a list of possible encodings, see
    section 4.9.2 <standard-encodings.html#standard-encodings>. New in
    version 2.0. Changed in version 2.3: Support for
    |'xmlcharrefreplace'| and |'backslashreplace'| and other error
    handling schemes added. 

Některý znaky ti tam holt budou chybět, ale lepší většina než nic. Hodně 
štěstí, s češtinou je to často porod ;-)


-- 
geon
Pavel Kosina




Martin Jedlička napsal(a):
> jo, diky...toto jsem zkousel, ale zase mi to pise:
> TypeError: decoding Unicode is not supported
>
> Martin
>
> Pavel Kosina napsal(a):
>   
>> Martin Jedlička napsal(a):
>>   
>>     
>>> Zdravim,
>>>   pracuju s excelem pres win32com a mam problem s textem v cestine. 
>>> Pokud mam text v excelu v cestine, tak mi to pri nacteni textu chodi chybu:
>>> UnicodeEncodeError: 'ascii' codec can't encode character u'\u010c' in 
>>> position 0: ordinal not in range(128)
>>> Cetl jsem clanek o cestine na http://www.py.cz/UnicodeEncodeError, ale 
>>> nevim jak pracovat s Unicode, kdyz mam ten nacteny text v nejake 
>>> promenne. Jak mam s tim ceskym textem pracovat?
>>>
>>>   
>>>     
>>>       
>> Obecně: musíš nejdříve zjistit (třeba i metodou pokus omyl), v kterém 
>> kodovaní je text v proměnné je uložen. No a pak to převedeš na 
>> všeobjímající unicode, asi takto:
>>
>> x=unicode(tvuj_text, "utf-8")
>> nebo
>> x=unicode(tvuj_text,"cp1250")
>>
>> Pak by to mělo jít tisknout i zobrazovat. Pokud to budeš ukládat do 
>> souboru, je lepší to převést na nějaké obyčejnější kodovani - třeba zpět 
>> na utf-8 nebo cp1250. Mě to někdy, když jsem ukládal přímo v unicode, 
>> pak vůbec nešel soubor zobrazit v editorech.
>>
>> Tipnul bych si u Excelu pod XP na utf-8...
>>
>>   
>>     
> _______________________________________________
> Python mailing list
> Python na py.cz
> http://www.py.cz/mailman/listinfo/python
>
>   


------------- další část ---------------
HTML příloha byla odstraněna...
URL: http://www.py.cz/pipermail/python/attachments/20060529/68f3b0e0/attachment.htm 


Další informace o konferenci Python