<?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">> 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">> 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">> 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
"iterates over lines" [what does that mean?] and that the iterator should return "strings",
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">> </span></font></div>
<div align="left"><font face="Arial" color="#7f0000"><span style="font-size:10pt">> 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">> 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">> 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">> we're now facing.</span></font></div>
<div align="left"><font face="Arial" color="#7f0000"><span style="font-size:10pt">> </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">>>> alist= ['aaa,bbb,ccc', 'ddd,eee', 'fff']</span></font></div>
<div align="left"><font face="Arial" color="#7f0000"><span style="font-size:10pt">>>> [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">>>> 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">>>> [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">>>> 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">>>> [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">  File "<stdin>", 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">>>> dlist= ['aaa,"bbb\nccc",qqq\n', 'ddd,eee\n', 'fff\n']</span></font></div>
<div align="left"><font face="Arial" color="#7f0000"><span style="font-size:10pt">>>> [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">  File "<stdin>", 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">>>> elist= ['aaa,"bbb\n', 'ccc",qqq\n', 'ddd,eee\n', 'fff\n']</span></font></div>
<div align="left"><font face="Arial" color="#7f0000"><span style="font-size:10pt">>>> [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>