擅长:python、mysql、java
<p>简单的答案是,有时数据不符合编写此代码时假定的规范(即有一个冒号和两个字段)。在</p>
<p>处理这个问题最简单的方法是添加if块<code>if len(splot)==2:</code>,并在该块中执行后续的行。在</p>
<p>或者,添加一个<code>else:</code>,并打印不符合规范的行,或者将它们保存到某个地方,以便进行诊断。在</p>
<p>像这样:</p>
<pre><code>import csv
import os
# Change working directory
os.chdir("/Users/joshuamannheimer/downloads")
file_name="NCI60_Bleomycin.csv"
with open(file_name) as csvfile:
NCI_data=csv.reader(csvfile, delimiter=',')
alldata={}
for row in NCI_data:
name_str=row[0]
splt=name_str.split(':')
if len(splt)==2:
n_name=splt[1]
alldata[n_name]=row
else:
print "invalid name: "+name_str
</code></pre>
<p>或者,您可以使用<a href="https://docs.python.org/2/tutorial/errors.html#handling-exceptions" rel="nofollow">try/except</a>,在本例中,它更健壮,因为我们可以在任何地方处理索引器错误,无论是在<code>row[0]</code>还是在{<cd4>}中,只有一个异常处理程序,而且我们不必指定<code>:</code>拆分字段的长度应该是2。在</p>
<p>此外,我们可以在拆分之前显式地检查是否存在<code>:</code>,并适当地分配名称。在</p>
^{pr2}$