擅长:python、mysql、java
<p><code>if row[2:] == 'None'</code>只需检查数组切片是否等于字符串,当然永远不会等于字符串</p>
<pre class="lang-py prettyprint-override"><code>if any(x != 'None' for x in row[2:]):
</code></pre>
<p>在数组切片上循环并检查是否至少有一个元素不等于字符串<code>'None'</code></p>
<p>当然,只有当条件为true时,才需要<code>append</code>该行</p>
<p>更经济的方法是一次读写一行</p>
<pre class="lang-py prettyprint-override"><code>import csv
with open('f_name', 'r') as readFile, open('f_name_new.csv', 'w') as writeFile:
reader = csv.reader(readFile)
writer = csv.writer(writeFile)
for row in reader:
if any(x != 'None' for x in row[2:]):
writer.writerow(row)
</code></pre>
<p>您不能同时读取和写入同一文件,因此这将为输出文件使用不同的名称。如果您像最初的方法一样将所有行读入内存,那么一旦内存中有了所有数据,您当然可以覆盖原始文件。缺点是您只能使用适合内存的文件;对于大文件,这往往会变得很慢</p>