2013-05-25 2 views
3

Я пытаюсь проанализировать XML-документ и получить определенные теги. Я хотел бы захватить тег имени (только если это тег имени, вложенный внутри исполнителя) и тег заголовка (только если он один вложен в релиз).
Это не слишком важно, однако важно то, что я почему-то ошибаюсь, говоря, что инструкция elif является недопустимым синтаксисом
Я просмотрел другие сообщения и убедился, что мои табуляции верны и что там не являются никакими дополнительными символами новой строки после любого из if.elif дает синтаксическую ошибку python?

Это фрагмент кода:

from lxml import etree 
import sys 

#infile = raw_input("Please enter an XML file to parse: ") 
outfile = open('results.txt', 'a') 

path = [] 
for event, elem in etree.iterparse('releases7.xml', events=("start", "end")): 
    if event == 'start': 
     path.append(elem.tag) 
    elif event == 'end': 
     # process the tag 
     if elem.tag == 'name': 
      if 'artist' in path and not 'extraartists' in path and not 'track' in path: 
       outfile.write('artist = ' + elem.text.encode('utf-8') + '\n') 
     elif elem.tag == 'title': 
      if 'release' in path and not 'track' in path: 
       outfile.write('release title = ' + elem.text.encode('utf-8') + '\n') 
      else: 
       print 'nonrelease' 
     path.pop() 

Это ошибка:

File "DataDestroy_Fast.py", line 18 
elif elem.tag == 'title': 
^
SyntaxError: invalid syntax 

(Примечание: Использование python2.7 на Mac OSX)

+0

'outfile.write ('artist =' + elem.text.encode ('utf-8') + '\ n');' << Предположим, что у него есть дополнительный ';' там? Это выпрыгивает ко мне ... – George

+0

О, это было просто помещено туда, потому что я хотел посмотреть, не изменилось ли это. он работает одинаково с – arc

+2

или находится в конце строки 3 фрагмента кода в конце. Существует ';' – George

ответ

6

Как я уже говорил в комментарии , У меня была ошибка, подобная этой ситуации, которая была вызвана дополнительным символом табуляции, который только что оказался в положении, когда он ничего не видел.

Если ваш редактор позволит вам просматривать невидимые символы, такие как вкладки и символы новой строки, вы можете увидеть, действительно ли это случай. Мой редактор также имеет возможность конвертировать вкладки в пробелы, которые могли бы устранить такую ​​проблему. Если все остальное не удается, просто удалите все пробелы в начале строки, а затем аккуратно сделайте это и посмотрите, не исчезла ли ошибка.

Недавно я столкнулся с действительно хорошим answer с аналогичным вопросом How can I add a print statement to this code without getting an indentation error.

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