[python] python ast.literal_eval a čeština

Pavel Kosina geon na post.cz
Úterý Září 15 15:11:08 CEST 2009


Nevím, ast neznám, moc jsem to nepochopil, a myslím, že chyba může být v 
něm. Pokud na něm netrváš, použij pickle.

V tvém příkladu chybí na začátku deklarace kodování a při ukládání ti to 
také musí házet chybu.
Bezpečně funguje:

# -*- coding: utf-8 -*-

text=u"Žluťoučký kůň pěl ďábelské ódy."
f=open("Kun.txt","w")
f.write(text.encode("cp1250"))    # ok
f.close()

geon

Luboš Melichar napsal(a), dne 15.9.2009 12:47:
> dodavam tedy
>
> db =  ast.literal_eval(text)
>
> by mi mela prevest string na pozadovany pythonovsky typ, v tomto
> pripade slovnik..
>
>   
>>>> import ast
>>>> ast.literal_eval("{'muffin' : 'lolz', 'foo' : 'kitty'}")
>>>>         
> {'muffin': 'lolz', 'foo': 'kitty'}
>
> http://docs.python.org/library/ast.html
>
>
> 2009/9/15 Luboš Melichar <lubos.melichar na gmail.com>:
>   
>> Zdravim,
>> jsem začátečník a tak dopředu prosím o trpělivost..
>>
>> Zkouším toto, v souboru mít uložený slovník, případně pole slovníků..
>>
>> {'cz': 'hezký', 'en': 'nice', 'de': 'schön'}
>>
>> vyčíst ze souboru, převést na slovník, pracovat s ním, uložit
>>
>> #VYCTENI ZE SOUBORU
>> f = open("db.db")
>> text = unicode(f.read(),('cp1250'))
>> f.close()
>>
>> #PRACE S DB
>> db =  ast.literal_eval(text)       #prevod stringu na seznam slovniku
>> db['maďarština'] = 'keřmideretvář'
>>
>> #ZAPIS DO SOUBORU
>> text2 = str(db)
>> f = open("db2.db")
>> f.write(text2.encode('cp1250'))  #ulozeni
>> f.close()
>>
>> bohuzel s cestinou mam neprekonatelny problem, ve vystupnim souboru se
>> mi to uklada v unicodu.
>> kodovani v obou souborech mam samozrejme cp1250.
>>
>> diky za popostrceni
>>
>>     
>
>
>
>   


Další informace o konferenci Python