Chyba je v pouziti ast.literal_eval(). Hle: >>> type(ast.literal_eval(unicode("'a'"))) <type 'str'>
Z typu unicode se stane typ string, coz je naprosto spravne, protoze modul ast vidi pythoni syntaxi 'a' coz je string. To ze parsovany retezec je unicode s tim nema nic moc spolecneho a informace o kodovani se ztrati, resp. z pohledu pythonu nikdy neexistovala. Predpoklada se tedy, ze zdrojovy retezec je ve stejnem kodovani jako program, cili dostanete nikoliv predpokladany unicode ale string v systemovem kodovani - je lehke si toho nevsimnout. Primitivni reseni by bylo nastavit explicitne kodovani programu -*- deklaraci v hlavicce a odstranit nadbytecne explictni prekodovani na vystupu. Spravne reseni by bylo neprasit to modulem ktery je urcen na neco uplne jineho. A brat s rezervou tutorialy psane stastlivci z ASCII zemi. Osobne bych se klonil k reseni pomoci prevence - sestrojit stroj casu a vysvetlit Janu Husovi co si o tech jeho novotach myslime. Nanestesti "import timemachine" nefunguje, quido si tenhle modul nechava pro sebe :-( Luboš Melichar (15.9.09): > 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 > _______________________________________________ > Python mailing list > Python@py.cz > http://www.py.cz/mailman/listinfo/python _______________________________________________ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python