Re: [python] Překódování textových souborů z DOSu.
Všem děkuji za účast. Hledal jsem chybu v programování a ono to tak jednoduše vlastně nejde z logiky věci. Jen jsem ještě přišel na další parametr encoding=cp1250, errors='ignore' místo strict =ignoruje chyby a lze využít i jiné například doplnění otazníku. Nicméně si budu muset udělat analýzu znaků a překódování provést podle svého. ___ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz
[python] Překódování textových souborů z DOSu.
Potřeboval bych archivní soubory z DOSu převést do kódování ve Win případně i v Linuxu (ISO8859), se kterým koketuji. V Pythonu 3 jsem vytvořil prográmek 1. soubor = 'c:/apy/zn852.txt' 2. soubor1 ='c:/apy/zn1252.txt' 3. f= open(soubor, 'r',encoding=cp852) 4. obsah= f.read() 5. print(obsah) 6. f1=open(soubor1, 'w',encoding=cp1250) 7. f1.write(obsah.encode(cp1250)) 8. f1.close() Až do ř. 7 proběhne vše dobře, ale soubor se mi v požadovaném kódování nedaří uložit. Dva dni googlím a pořád nevidím, kde je chyba? Předpokládám, že proměnná obsah ve v unicode utf-8. A nebo ne? Tréninkový soubor zn852.txt jsou vygenerované znaky char(I), pro I=0 to 255 v latin2 (cp852). Děkuji. ___ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz
Re: [python] Překódování textových souborů z DOSu.
Souboru f1 už nastavuješ kódování, takže do něj můžeš psát přímo řetězce, bez encode(): f1.write(obsah) Případně pokud chceš do souboru zapisovat bajty (ne Unicode řetězce), otevři ho pro binární zápis: f1=open(soubor1, 'wb') f1.write(obsah.encode(cp1250)) 2014-03-03 14:53 GMT+01:00 Jiří Nekolný jneko...@centrum.cz: Potřeboval bych archivní soubory z DOSu převést do kódování ve Win případně i v Linuxu (ISO8859), se kterým koketuji. V Pythonu 3 jsem vytvořil prográmek 1. soubor = 'c:/apy/zn852.txt' 2. soubor1 ='c:/apy/zn1252.txt' 3. f= open(soubor, 'r',encoding=cp852) 4. obsah= f.read() 5. print(obsah) 6. f1=open(soubor1, 'w',encoding=cp1250) 7. f1.write(obsah.encode(cp1250)) 8. f1.close() Až do ř. 7 proběhne vše dobře, ale soubor se mi v požadovaném kódování nedaří uložit. Dva dni googlím a pořád nevidím, kde je chyba? Předpokládám, že proměnná obsah ve v unicode utf-8. A nebo ne? Tréninkový soubor zn852.txt jsou vygenerované znaky char(I), pro I=0 to 255 v latin2 (cp852). Děkuji. ___ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz ___ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz
Re: [python] Překódování textových souborů z DOSu.
To už jsem zkoušel, také to nejde. Mohu případně zalat soubor zn852.txt. Nechci to zapisovat binárně skutečně se jedná o čistě textové soubory. RESTART Traceback (most recent call last): File C:\apy\apy.py, line 7, in module f1.write(obsah) File C:\Python33\lib\encodings\cp1250.py, line 19, in encode return codecs.charmap_encode(input,self.errors,encoding_table)[0] UnicodeEncodeError: 'charmap' codec can't encode characters in position 178-182: character maps to undefined ___ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz
Re: [python] Překódování textových souborů z DOSu.
dovolim si do toho vstoupit, kdybych takovou konverzi stejne chtel provest, s tim ze si sam reknu na co to prevest je mozne nejak konverzni tabulku dodefinovat ? Dne 3. března 2014 16:59 Petr Viktorin encu...@gmail.com napsal(a): Aha, už jsem si to přečetl trochu líp :) Problém je v tom, že znaky v cp852 jsou, ale v cp1250 ne. Příklad je ░ (U+2591 LIGHT SHADE, v cp852 '\xbf'). Takové znaky samozřejmě převést nejde. Co bys chtěl, aby s nimi tvůj program dělal? Jinak doporučuju kódovat do UTF-8, které umí všechny znaky na které si vzpomeneš. On Mon, Mar 3, 2014 at 3:51 PM, Jiří Nekolný jneko...@centrum.cz wrote: To už jsem zkoušel, také to nejde. Mohu případně zalat soubor zn852.txt. Nechci to zapisovat binárně skutečně se jedná o čistě textové soubory. RESTART Traceback (most recent call last): File C:\apy\apy.py, line 7, in module f1.write(obsah) File C:\Python33\lib\encodings\cp1250.py, line 19, in encode return codecs.charmap_encode(input,self.errors,encoding_table)[0] UnicodeEncodeError: 'charmap' codec can't encode characters in position 178-182: character maps to undefined ___ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz ___ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz ___ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz
Re: [python] Překódování textových souborů z DOSu.
S.translate(table [,deletechars]) - string Return a copy of the string S, where all characters occurring in the optional argument deletechars are removed, and the remaining characters have been mapped through the given translation table, which must be a string of length 256 or None. If the table argument is None, no translation is applied and the operation simply removes the characters in deletechars. On 03/03/14 17:45, Ondrej Beranek wrote: dovolim si do toho vstoupit, kdybych takovou konverzi stejne chtel provest, s tim ze si sam reknu na co to prevest je mozne nejak konverzni tabulku dodefinovat ? ___ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz
Re: [python] Překódování textových souborů z DOSu.
prosté. dík. 2014-03-03 17:44 GMT+01:00 Hynek Fabian hynek.fab...@firma.seznam.cz: S.translate(table [,deletechars]) - string Return a copy of the string S, where all characters occurring in the optional argument deletechars are removed, and the remaining characters have been mapped through the given translation table, which must be a string of length 256 or None. If the table argument is None, no translation is applied and the operation simply removes the characters in deletechars. On 03/03/14 17:45, Ondrej Beranek wrote: dovolim si do toho vstoupit, kdybych takovou konverzi stejne chtel provest, s tim ze si sam reknu na co to prevest je mozne nejak konverzni tabulku dodefinovat ? ___ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz ___ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz