擅长:python、mysql、java
<p>我可以做些类似的事情</p>
<pre><code>import csv
with open("special.csv", "rb") as infile, open("repaired.csv", "wb") as outfile:
reader = csv.reader(infile)
writer = csv.writer(outfile)
conversion = set('_"/.$')
for row in reader:
newrow = [''.join('_' if c in conversion else c for c in entry) for entry in row]
writer.writerow(newrow)
</code></pre>
<p>会变的</p>
<pre><code>$ cat special.csv
th$s,2.3/,will-be
fixed.,even.though,maybe
some,"shoul""dn't",be
</code></pre>
<p>(注意,我有一个引用值)</p>
<pre><code>$ cat repaired.csv
th_s,2_3_,will-be
fixed_,even_though,maybe
some,shoul_dn't,be
</code></pre>
<hr/>
<p>现在,您的代码正在将整个文本读成一行:</p>
<pre><code>text = input.read()
</code></pre>
<p>从<code>_</code>字符开始:</p>
<pre><code>newtext = '_'
</code></pre>
<p>在<code>text</code>中的每个字符上循环:</p>
<pre><code>for c in text:
</code></pre>
<p>将更正的字符添加到<code>newtext</code>(非常慢):</p>
<pre><code> newtext += '_' if c in conversion else c
</code></pre>
<p>然后写下<em>原始</em>字符(?),作为列,添加到新的csv:</p>
<pre><code> writer.writerow(c)
</code></pre>
<p>。。这不太可能是你想要的。:^)</p>