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