回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我有一个csv文件,其结构如下:</p>
<pre><code>Year-Sem,Course,Studentid,Score
201001,CS301,100,363
201001,CS301,101,283
201001,CS301,102,332
201001,CS301,103,254
201002,CS302,101,466
201002,CS302,102,500
</code></pre>
<p>这里每年分为两个学期——01(秋季)和02(春季),数据从2008年到2014年(共14个学期)。现在我要做的是建立一个字典,其中<code>course</code>和<code>studentid</code>成为键,并且它们各自的<code>score</code>由<code>year-sem</code>作为值排序。所以每个学生的输出应该是这样的:</p>
<pre><code>[(studentid,course):(year-sem1 score,year-sem2 score,...)]
</code></pre>
<p>我第一次尝试用这段代码制作<code>[(studentid,course):(score)]</code>的字典,但得到的错误是<code>IndexError: list index out of range</code>:</p>
<pre><code>with open('file1.csv', mode='rU') as infile:
reader = csv.reader(infile,dialect=csv.excel_tab)
with open('file2.csv', mode='w') as outfile:
writer = csv.writer(outfile)
mydict = {(rows[2],rows[1]): rows[3] for rows in reader}
writer.writerows(mydict)
</code></pre>
<p>当我没有使用<code>dialect=csv.excel_tab</code>和<code>rU</code>时,我得到的错误是<code>_csv.Error: new-line character seen in unquoted field - do you need to open the file in universal-newline mode?</code>。你知道吗</p>
<p>如何解决这个错误并用我在上面的文章中提到的结构<code>[(studentid,course):(year-sem1 score,year-sem2 score,...)]</code>生成字典?你知道吗</p>