title: CSV reader behavior with None and empty string
body: <p>I'd like to distinguish between <code>None</code> and empty strings (<code>''</code>) when going back and forth between Python data structure and csv representation using Python's <code>csv</code> module.</p>
  <p>My issue is that when I run:</p>
  <pre><code>import csv, cStringIO
  
  data = [['NULL/None value',None],
          ['empty string','']]
  
  f = cStringIO.StringIO()
  csv.writer(f).writerows(data)
  
  f = cStringIO.StringIO(f.getvalue())
  data2 = [e for e in csv.reader(f)]
  
  print &quot;input : &quot;, data
  print &quot;output: &quot;, data2
  </code></pre>
  <p>I get the following output:</p>
  <pre class="lang-none prettyprint-override"><code>input :  [['NULL/None value', None], ['empty string', '']]
  output:  [['NULL/None value', ''], ['empty string', '']]
  </code></pre>
  <p>Of course, I could play with <code>data</code> and <code>data2</code> to distinguish <code>None</code> and empty strings with things like:</p>
  <pre><code>data = [d if d!=None else 'None' for d in data]
  data2 = [d if d!='None' else None for d in data2]
  </code></pre>
  <p>But that would partly defeat my interest of the <code>csv</code> module (quick deserialization/serialization implemented in C, specially when you are dealing with large lists).</p>
  <p>Is there a <code>csv.Dialect</code> or parameters to <code>csv.writer</code> and <code>csv.reader</code> that would enable them to distinguish between <code>''</code> and <code>None</code> in this use-case?</p>
  <p>If not, would there be an interest in implementing a patch to <code>csv.writer</code> to enable this kind of back and forth? (Possibly a <code>Dialect.None_translate_to</code> parameter defaulting to <code>''</code> to ensure backward compatibility.)</p>