Re: [python] Překódování textových souborů z DOSu.

2014-03-04 Tema obsahu Jiří Nekolný
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.

2014-03-03 Tema obsahu Jiří Nekolný
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.

2014-03-03 Tema obsahu Petr Viktorin
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.

2014-03-03 Tema obsahu Jiří Nekolný
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.

2014-03-03 Tema obsahu Ondrej Beranek
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.

2014-03-03 Tema obsahu Hynek Fabian
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.

2014-03-03 Tema obsahu Ondrej Beranek
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