我正在尝试解析XML文档并获取某些标记.我想获取名称标签(仅当它是嵌套在艺术家中的名称标签)和标题标签(仅当它是嵌套在发布中的标签).
这不是太重要,但重要的是,我出于某种原因得到一个错误,说elif语句是无效的语法
我已查看其他帖子并确保我的标签是正确的,并且没有任何任何if之后的额外换行符.
这是代码片段:
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()
Run Code Online (Sandbox Code Playgroud)
这是错误:
File "DataDestroy_Fast.py", line 18
elif elem.tag == 'title':
^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)
(注意:在Mac OSX上使用Python2.7)
正如我在评论中提到的那样,我有一个像这样的错误,这是因为一个额外的制表符恰好恰好在一个没有看见的位置.
如果您的编辑器允许您查看标签和换行符等不可见字符,您可以实际查看是否是这种情况.我的编辑器还可以选择将标签转换为空格来解决这个问题.如果所有其他方法都失败了,只需删除行开头的所有空格,然后仔细检查,然后查看错误是否仍然存在.
最近我遇到了一个类似问题的一个非常好的答案我怎样才能在没有缩进错误的情况下为这段代码添加print语句.