4

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 を使用)

4

2 に答える 2

6

コメントで述べたように、何も表示されない位置にたまたま余分なタブ文字があったために、このようなエラーが発生しました。

エディターでタブや改行などの非表示文字を表示できる場合は、実際にそうであるかどうかを確認できる場合があります。私のエディターには、このような問題を解決するタブをスペースに変換するオプションもあります。他のすべてが失敗した場合は、行頭の空白をすべて削除してから、慎重にやり直して、エラーがまだ発生するかどうかを確認してください。

最近、同様の質問How can I add a print statement to this code without gets an indent errorに対する本当に良い答えに出くわしました。

于 2013-11-19T21:46:24.393 に答える