<?xml  version="1.0" ?><html>
<head>
<title></title>
</head>
<body>
<div align="left"><font face="Arial"><span style="font-size:10pt">On 19 Aug 2003 at 13:56, Andrew McNamara wrote:</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Arial" color="#7f0000"><span style="font-size:10pt">&gt; The problem is that our end of line processing is incompatible with the</span></font></div>
<div align="left"><font face="Arial" color="#7f0000"><span style="font-size:10pt">&gt; use of an iterator as the source of input lines - there is no satisfactory</span></font></div>
<div align="left"><font face="Arial" color="#7f0000"><span style="font-size:10pt">&gt; answer that allows us to retain both.</span></font></div>
<div align="left"><br/></div>
<div align="left"><font face="Arial"><span style="font-size:10pt">Using an iterator as a source of what? Lines, you say? The documentation says it 
&quot;iterates over lines&quot; [what does that mean?] and that the iterator should return &quot;strings&quot;, 
without saying what they should contain, how they should be terminated, etc. See 
examples with commentary below.</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Arial" color="#7f0000"><span style="font-size:10pt">&gt; </span></font></div>
<div align="left"><font face="Arial" color="#7f0000"><span style="font-size:10pt">&gt; The requirement that the input file be opened in binary mode for what</span></font></div>
<div align="left"><font face="Arial" color="#7f0000"><span style="font-size:10pt">&gt; is obviously a text format is going to a never ending source of suprise</span></font></div>
<div align="left"><font face="Arial" color="#7f0000"><span style="font-size:10pt">&gt; for people using the module, and seems like a bigger wart than the one</span></font></div>
<div align="left"><font face="Arial" color="#7f0000"><span style="font-size:10pt">&gt; we're now facing.</span></font></div>
<div align="left"><font face="Arial" color="#7f0000"><span style="font-size:10pt">&gt; </span></font></div>
<div align="left"><br/></div>
<div align="left"><font face="Arial"><span style="font-size:10pt">I agree on the surprise factor with binary mode. It's not obvious what the purpose is. 
How does Excel on the Mac terminate lines in CSV files? CR or CRLF?</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Arial" color="#7f0000"><span style="font-size:10pt">&gt;&gt;&gt; alist= ['aaa,bbb,ccc', 'ddd,eee', 'fff']</span></font></div>
<div align="left"><font face="Arial" color="#7f0000"><span style="font-size:10pt">&gt;&gt;&gt; [x for x in csv.reader(alist)]</span></font></div>
<div align="left"><font face="Arial" color="#7f0000"><span style="font-size:10pt">[['aaa', 'bbb', 'ccc'], ['ddd', 'eee'], ['fff']]</span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt"># so we don't need line terminators</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Arial" color="#7f0000"><span style="font-size:10pt">&gt;&gt;&gt; blist= ['aaa,bbb,ccc\n', 'ddd,eee\n', 'fff\n']</span></font></div>
<div align="left"><font face="Arial" color="#7f0000"><span style="font-size:10pt">&gt;&gt;&gt; [x for x in csv.reader(blist)]</span></font></div>
<div align="left"><font face="Arial" color="#7f0000"><span style="font-size:10pt">[['aaa', 'bbb', 'ccc'], ['ddd', 'eee'], ['fff']]</span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt"># but if they are supplied, they are ignored</span></font></div>
<div align="left"><br/></div>
<div align="left"><font face="Arial" color="#7f0000"><span style="font-size:10pt">&gt;&gt;&gt; clist= ['aaa,bbb\nccc\n', 'ddd,eee\n', 'fff\n']</span></font></div>
<div align="left"><font face="Arial" color="#7f0000"><span style="font-size:10pt">&gt;&gt;&gt; [x for x in csv.reader(clist)]</span></font></div>
<div align="left"><font face="Arial" color="#7f0000"><span style="font-size:10pt">Traceback (most recent call last):</span></font></div>
<div align="left"><font face="Arial" color="#7f0000"><span style="font-size:10pt">&#160; File &quot;&lt;stdin&gt;&quot;, line 1, in ?</span></font></div>
<div align="left"><font face="Arial" color="#7f0000"><span style="font-size:10pt">_csv.Error: newline inside string</span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt"># except when embedded in an unquoted string/line</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Arial" color="#7f0000"><span style="font-size:10pt">&gt;&gt;&gt; dlist= ['aaa,&quot;bbb\nccc&quot;,qqq\n', 'ddd,eee\n', 'fff\n']</span></font></div>
<div align="left"><font face="Arial" color="#7f0000"><span style="font-size:10pt">&gt;&gt;&gt; [x for x in csv.reader(dlist)]</span></font></div>
<div align="left"><font face="Arial" color="#7f0000"><span style="font-size:10pt">Traceback (most recent call last):</span></font></div>
<div align="left"><font face="Arial" color="#7f0000"><span style="font-size:10pt">&#160; File &quot;&lt;stdin&gt;&quot;, line 1, in ?</span></font></div>
<div align="left"><font face="Arial" color="#7f0000"><span style="font-size:10pt">_csv.Error: newline inside string</span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt"># whoops, we really do have to pretend we are reading a file in *TEXT* mode (see next 
example)</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Arial" color="#7f0000"><span style="font-size:10pt">&gt;&gt;&gt; elist= ['aaa,&quot;bbb\n', 'ccc&quot;,qqq\n', 'ddd,eee\n', 'fff\n']</span></font></div>
<div align="left"><font face="Arial" color="#7f0000"><span style="font-size:10pt">&gt;&gt;&gt; [x for x in csv.reader(elist)]</span></font></div>
<div align="left"><font face="Arial" color="#7f0000"><span style="font-size:10pt">[['aaa', 'bbb\nccc', 'qqq'], ['ddd', 'eee'], ['fff']]</span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt"># Wow, how do we explain all that to J. Random Newbie?</span></font></div>
<div align="left"></div>
</body>
</html>