擅长:python、mysql、java
<p>接下来是@JackManey注释,他建议用<code>'\\"'</code>替换双引号中<code>'""'</code>的所有实例。</p>
<p>如果我们现在在双引号的单元格中,就没有必要识别,我们可以用<code>'\\"'</code>替换<code>'""'</code>的所有实例。
<a href="https://docs.python.org/3.1/library/csv.html#csv.Dialect.escapechar" rel="nofollow">Python documentation says</a>:</p>
<blockquote>
<p>On reading, the escapechar removes any special meaning from the following character</p>
</blockquote>
<p>但是,如果原始单元格已经包含转义字符,则仍然会出现这种情况,例如:<code>'qw\\\\""erty'</code>正在生成<code>[['qw\\"erty']]</code>。所以在解析之前,我们也必须转义转义字符。</p>
<p>最终解决方案:</p>
<pre><code>with open(file_path, 'rb') as f:
content = f.read().replace('\\', '\\\\').replace('""', '\\"')
reader = csv.reader(StringIO(content), doublequote=False, escapechar='\\')
return [row for row in reader]
</code></pre>