2013-07-03 176 views
1

免费标记此帖子SINEC IT是由TYPO引起的.... APOLOGIES什么导致这个语法错误?

我无法弄清楚我的生活为什么这个尝试和除了语句是返回语法错误。在代码/错字中是否早一点?

import csv 

# This function takes a tab-delim csv and merges the ones with the same name but different phone/email/websites. 
def merge_duplicates(sheet): 

    with(open(sheet, 'rU')) as f: 

     mysheet = csv.DictReader(f, delimiter = '\t')  
     mysheet_list = list(mysheet) 

     for rowvalue, row in enumerate(mysheet_list): 
      print rowvalue, row 

      try: 
       if row['name'] == mysheet_list[rowvalue+1]['name']: 
        if row['email'] != mysheet_list[rowvalue+1]['email']: 
         row['alt_email'] = mysheet_list[rowvalue+1['email'] 
#      if row['website'] != mysheet_list[rowvalue+1]['website']: 
#       row['alt_website'] != mysheet_list[rowvalue+1]['website'] 
      except IndexError: 
       print("We're at the end now") 

merge_duplicates('ieca_first_col_fake_text.txt') 

如果有帮助,我提供了一个链接,HERE到示例电子表格。

非常感谢!

+0

请张贴带有错误的完整堆栈跟踪。 – thegrinner

+0

请参阅下面的答案。 Python生成的堆栈跟踪应该给出了精确的行号,并且大多数语法突出显示编辑同样会指出有问题的行。 –

回答

4

缺少]这里:

mysheet_list[rowvalue+1['email'] 
        ^
         | 

它应该是:

mysheet_list[rowvalue+1]['email'] 
2

row['alt_email'] = mysheet_list[rowvalue+1['email']您错过了]

修正:

row['alt_email'] = mysheet_list[rowvalue+1['email']]

+0

你的'fix'是错误的,如果'rowvalue + 1'返回一个数字,那么'4 ['email']'会再次引发一个错误。 'TypeError:'int'对象没有属性'__getitem __'' –

相关问题