[python] Kódování souborů
geon
geon na post.cz
Úterý Prosinec 20 08:09:25 CET 2005
geon napsal(a):
> Martin Blazik napsal(a):
>
>> Cusik,
>> tenhle algoritmus ma ale jeden problem. U vetsiny textu dostanes nekolik
>> moznych kodovani. Podobny problem jsem uz pred mnoha lety resil v jinem
>> prog jazyce a postupoval jsem tak, ze jsem v kazdem typu kodovani
>> pocital znaky s diakritikou. Vyhralo to kodovani, ktere jich melo
>> nejvice. Ani tato metoda neni 100%, ale pro vetsinu pripadu dava pomerne
>> dobre vysledky.
>>
>>
>>
> Díky za to! Dává to přijatelné výsledky: (možná by šel omezit počet
> načítaných bytů u velkých souborů, možná zefektivnit kod ...)
>
> # -*- coding: cp1250 -*-
>
> def tryEncodings(text):
> encodings = (
> 'ascii',
> 'iso-8859-2',
> 'cp1250',
> 'cp852',
> 'utf-8'
> )
> cestina=u"áčďéěíňóřšťúůýžÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ"
> class enc:
> kodovani=None
> pocet=0
> encoding = []
> for e in encodings:
> try:
> #text.decode(e)
> unicode(text,e)
> except (UnicodeEncodeError, UnicodeDecodeError):
> pass
> else:
> kod=enc()
> kod.kodovani=e
> encoding.append(kod)
>
> max=0
> for kod in encoding:
> e=kod.kodovani
> for znak in unicode(text,e):
> if znak in cestina:
> kod.pocet=kod.pocet+1
> if kod.pocet>max:
> max=kod.pocet
> Kod=kod.kodovani
>
> return Kod
>
> import os, sys
> seznam =[jmeno for jmeno in os.listdir('.') if os.path.isfile(jmeno)]
>
> for jmeno in seznam:
> text=file(jmeno).read()
> print jmeno, tryEncodings(text)
>
>
>
>
Další informace o konferenci Python