[python] Q: Cteni unicode retezcu ze souboru UTF-8 s BOM?
RMiklos na pss.sk
RMiklos na pss.sk
Čtvrtek Březen 15 11:52:37 CET 2007
>Není další chyba v tom, že při čtení v textovém režimu
>dostávám na konci řádku '\r\n'? (... pod Windows, neprovádí
>se unifikace konců řádků.)
Neviem jak je to s unifikaciou koncov riadkov vo Windowse asi je tam ako
pozostatok z DOSu '\r\n'.
Aby som nemusel riesit ci je na konci riadku '\r\n' alebo '\r' , robim
vzdy chomp (t.j. line = line.rstrip() )
co v tom skripte samozrejme robis aj ty.
"Petr Prikryl" <PrikrylP na skil.cz>
Sent by: python-bounces na py.cz
15.03.2007 11:10
Please respond to
Konference PyCZ <python na py.cz>
To
"Konference PyCZ" <python na py.cz>
cc
Subject
Re: [python] Q: Cteni unicode retezcu ze souboru UTF-8 s BOM?
Díky. Tušil jsem nějakou zradu. Nakonec jsem to principiálně
napsal takto.
===================================================
import codecs
bom = unicode(codecs.BOM_UTF8, 'utf8')
f = codecs.open('soubor.txt', 'r', 'utf-8')
for line in f:
line = line.rstrip() + u'\n'
if line.startswith(bom):
line = line.lstrip(bom)
print line,
f.close()
===================================================
To znamená, že z trojbajtové sekvence codecs.BOM_UTF8,
která má hodnotu '\xef\xbb\xbf' vyrobím neexistující
unicode znak u'\ufeff', který zahazuju, protože
neexistuje :-)
Není další chyba v tom, že při čtení v textovém režimu
dostávám na konci řádku '\r\n'? (... pod Windows, neprovádí
se unifikace konců řádků.)
RMiklos napsal... na pss.sk
> Je to zjavne bug - tu sa o tom docitas:
http://evanjones.ca/python-utf8.html
>
> Takze BOM treba odrezat rucne:
> --------------------------------------------------
> # -*- coding: cp1250 -*-
> import codecs
> bom = unicode( codecs.BOM_UTF8, "utf8" )
> print "BOM = %s" % repr(bom)
> f = codecs.open('soubor.txt', 'r', 'utf-8')
> for line in f:
> #print "line[0]= %s" % repr(line[0])
> if line[0] == unicode( codecs.BOM_UTF8, "utf8" ):
> l=line.lstrip(unicode( codecs.BOM_UTF8, "utf8" ))
> else:
> l = line
> print repr(l)
> print l[1:]
> f.close()
> --------------------------------------------------
_______________________________________________
Python mailing list
Python na py.cz
http://www.py.cz/mailman/listinfo/python
Mgr. Ing. Roman MIKLÓŠ
Prvá stavebná sporiteľňa a.s.
Bajkalská 30, P. O. Box 48
829 48 Bratislava 25
Tel.: +421/ 2 / 582 31 174
Fax: +421/ 2 / 582 31 109
------------- další část ---------------
HTML příloha byla odstraněna...
URL: http://www.py.cz/pipermail/python/attachments/20070315/f3f95f42/attachment.htm
Další informace o konferenci Python