Re: [python] Unicode/ne-unicode problem

2012-05-02 Tema obsahu Petr Přikryl
Nejjednodušší je to převést nejdříve do Unicode a druhým krokem do požadovaného kódování. Tohle jsem dělal pod Windows na konzoli, která používá cp852: u = uě š č ř u u'\u011b \u0161 \u010d \u0159' s = u.encode('utf-8') s '\xc4\x9b \xc5\xa1 \xc4\x8d \xc5\x99' u2 = s.decode('utf-8') u2

Re: [python] Unicode/ne-unicode problem

2012-05-02 Tema obsahu Jaroslav Lukesh
Děkuji, ale nechápu, jak proměnné říct, že už obsahuje text v kódování UTF8. Mám proměnnou, která obsahuje 'Ă˝ á Ă­ Ă.' tedy přesněji, toto je ve windowsech vidět, když si zobrazíte utf8 v cp1250. Python mám ale na Linuxu v LANG=cs_CZ.iso8859-2. Ty znaky v UTF8 tam jdou binárně zvenčí a nevím

Re: [python] Unicode/ne-unicode problem

2012-05-02 Tema obsahu Petr Messner
Dobrý den, pokud v proměnné s máte 'Ă˝ á Ă­ Ă.', pak zavoláním u = s.decode(utf8) z toho dostanete unicode řetězec. S ním pak můžete dále pracovat nebo ho převést do jiného kódování. Pokud ho chcete zobrazit na Windows v kódování cp1250, zkuste u.encode(cp1250). Je nutné si uvědomit, ze

Re: [python] Unicode/ne-unicode problem

2012-05-02 Tema obsahu Hynek Fabian
Chtěl bych to udělat systémově, než na ten vstup poštvat 50x replace. Jestli tím replace myslíš decode :-), tak to jde, v modulu codecs je wrapper nad voláním open() který provádí transparentní překódování: In [21]: codecs.open(test,r, utf8).read() Out[21]: u'\u0161\u010d\u0159\u017e\n'

Re: [python] Unicode/ne-unicode problem

2012-05-02 Tema obsahu Jaroslav Lukesh
Jenže právě toto nějak nejde, řve na tom ř: s='Ă˝ á Ă­ Ă.' u = s.decode(utf8) Traceback (most recent call last): File stdin, line 1, in ? File /var/zope/python/lib/python2.4/encodings/utf_8.py, line 16, in decode return codecs.utf_8_decode(input, errors, True) UnicodeDecodeError:

Re: [python] Unicode/ne-unicode problem

2012-05-02 Tema obsahu Petr Messner
Pokud jste do programu napsal s='Ă˝ á Ă­ Ă.' u = s.decode(utf8) Pak musíte ten zdrojový kód uložit v kódování, pro které to bude fungovat a toto kódování deklarovat v hlavičce (-*- coding: cp1250). Možná bude lepší pracovat s hexadecimalnim zápisem těchto znaků, abychom se podobným

Re: [python] Unicode/ne-unicode problem

2012-05-02 Tema obsahu Petr Přikryl
Ten nečitelný řetězec je zapsaný ve zdrojovém textu, nebo je načtený ze souboru? Když mám v proměnné UTF-8 bajty, tak musím udělat .decode() nebo unicode(), ale jako parametr musím uvést to 'utf-8'. Posloupnost bajtů v kódovaní UTF-8 je jednou z možných reprezentací Unicode řetězce. Vznikla

Re: [python] Unicode/ne-unicode problem

2012-05-02 Tema obsahu Jaroslav Lukesh
Je to proměnná, kde obsah byl získaný ze streamu dat. a='Ă˝ á Ă­ Ă.' repr(a) '\\xc3\\xbd \\xc3\\xb7 \\xc3\\xad \\xc3.' Dík, JL. - Původní zpráva - Od: Petr Přikryl prik...@atlas.cz Ten nečitelný řetězec je zapsaný ve zdrojovém textu, nebo je načtený ze souboru? Když mám v

Re: [python] Unicode/ne-unicode problem

2012-05-02 Tema obsahu Petr Přikryl
Já vidím tohle: rr = '\\xc3\\xbd \\xc3\\xb7 \\xc3\\xad \\xc3.' a = eval(rr) a '\xc3\xbd \xc3\xb7 \xc3\xad \xc3.' u = a.decode('utf-8') Traceback (most recent call last): File stdin, line 1, in module File c:\Python27\lib\encodings\utf_8.py, line 16, in decode return

Re: [python] Unicode/ne-unicode problem

2012-05-02 Tema obsahu Jaroslav Lukesh
Mezitím jsme v jiném threadu zjistili, že jde o utf8 zapsané v cp1250, ale i tak mám tohle - Python 2.4.6: a='Ă˝ á Ă­ Ă.' repr(a) '\\xc3\\xbd \\xc3\\xb7 \\xc3\\xad \\xc3.' a.decode(cp1250) u'\u0102\u02dd \u0102\xb7 \u0102\xad \u0102.' print eval(a).decode(cp1250) Traceback (most recent

Re: [python] Unicode/ne-unicode problem

2012-05-02 Tema obsahu Petr Messner
Ono to možná nikam nevede. Bez posledních dvou znaků je to OK: print \xC3\xBD \xC3\xB7 \xC3\xAD.decode(utf8) ý ÷ í Ono za \xC3 musí z definice UTF-8 následovat bajt, který má nastavený nejvyšší bit, a to obyčejná tečka není snad v žádném kódování, rozhodně v žádném založeném na ASCII jako je

Re: [python] Unicode/ne-unicode problem

2012-05-02 Tema obsahu Jaroslav Lukesh
Myslím že jsem to zkopíroval celé, ale mohlo mi něco utéct. Jenže teď to mám z uložených poznámek v PSpadu, tak ten do toho taky kecal a teď je to úplně jinak, než to co jsem v pondělí kopíroval přímo do promptu, ach jo. No nic, musím to znova vygenerovat. - Původní zpráva - Od:

[python] Unicode/ne-unicode problem

2012-05-02 Tema obsahu Zdeněk Böhm
Tento problém vzniká, když je text převeden do lokálního kódování dvakrát. # výchozí text: ě š č ř '\xc4\x9b \xc5\xa1 \xc4\x8d \xc5\x99' # Tady se text chybně považuje za unicode: text = u'\xc4\x9b \xc5\xa1 \xc4\x8d \xc5\x99'.encode(utf8) # a takovou to pak udělá paseku: text

Re: [python] file.close

2012-05-02 Tema obsahu zu1234
Děkuji za konstruktivní odpověď. 1) Opravdu mi na jednom místě u close chyběly závorky :-) 2) Postup pomocí atexit jsem použil podle zvyku z bash-e. Ale python nezavírá soubory před atexit funkcí, jak jsem se mylně domníval. 3) Přepsal jsem to na 'with open(...) as ...' nebo 'try ...

Re: [python] file.close

2012-05-02 Tema obsahu zu1234
5) Nakonec jsem musel před rušením dočasného adresáře ponechat time.sleep(1). Jinak nastávala chyba: adresář není prázdný Možná už není potřeba do toho nějak šťourat, ale tohle je divný. Jak přesně se ten dočasný adresář ruší (maže)? Ruším pomocí shutil.rmtree(...) . Když se do něj

Re: [python] Unicode/ne-unicode problem

2012-05-02 Tema obsahu Jaroslav Lukesh
Aha, toto by byla cesta. Jenže mě to překóduje cp1250 (tak to jde do browseru) přes utf8 (tak to jde z browseru), to chytnu a pošlu do browseru zpět jako cp1250 a ten zmetek co od něj pak dostanu vypadá takhle: vstup, který projde ttímto mlýnem: 'ě š č ř' a výstup: a='Ă˝ á Ă­ Ă.' a