elif给出语法错误python?

时间:2013-05-25 02:03:59

标签: python python-2.7

我正在尝试解析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()

这是错误:

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

(注意:在Mac OSX上使用Python2.7)

2 个答案:

答案 0 :(得分:6)

正如我在评论中提到的那样,我曾经有过这样的错误,这是因为一个额外的制表符正好恰好位于没有看到任何内容的位置。

如果您的编辑器允许您查看标签和换行符等不可见字符,您可以实际查看是否是这种情况。我的编辑器还可以选择将标签转换为空格来解决这个问题。如果所有其他方法都失败了,只需删除行开头的所有空格,然后仔细检查,然后查看错误是否仍然存在。

最近,我遇到了一个非常好answer的问题How can I add a print statement to this code without getting an indentation error

答案 1 :(得分:0)

如果在中间,如下所示:

”如果在路径中是“艺术家”,而在路径中不是“ extraartists”,而在路径中不是“ track”:                 outfile.write('artist ='+ elem.text.encode('utf-8')+'\ n')“

在返回之前,应先用别的方法关闭 “ elif elem.tag =='title':”

我的建议是在if中创建另一个if函数,而不是if。这样就不那么复杂了。