2013-07-03 7 views
1

FEEL FREE TO FLAG ЭТО ПОСТ SINEC оно было причинено опечатка .... ИзвиненияЧто вызывает эту синтаксическую ошибку?

Я не могу понять, за жизнь мне, почему это попробовать и, кроме утверждения возвращает ошибку синтаксиса. Это что-то раньше в коде/опечатке?

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 __'' –

Смежные вопросы