0

(更新): ID に従って値を照合するコードを追加しました。質問: 両方の辞書で一致する ID u'1' と 'u'0' が認識されないのはなぜですか?

(コードの目標): コメント付きのテキストを .docx ファイルから取得し、それを xml タグ ID を介してコメントに一致させるスクリプトを作成しています。コメントタグ、テキスト、およびIDを抽出することができました。これらを一致させる必要があります。私の戦略は、2 つの辞書を作成することです。1) 1 つは ID をキーとして、コメント付きのテキストを値として、2) 2 番目は ID をキーとして、コメントを値として使用します。

次に、両方の辞書を実行する予定で、それらのキー (つまり ID) が一致する場合は、一致するコメント付きテキスト/コメントのペアのタプルを作成したいと考えています。ディクショナリの作成に問題があり、ディクショナリを作成するための構文が無効であるというエラー メッセージが表示されます。理由がよくわかりません。何か案は?

from bs4 import BeautifulSoup as Soup
f = open('transcript.xml','r')
soup = Soup(f)
#print soup.prettify()

textdict = {}
for i in soup.find_all('w:commentrangestart'):

       # variable 'key' is assigned to the tag id
    key = i.parent.contents[1].attrs['w:id']

       #variable 'value' is assigned to the tag's text
    value= ''.join(i.nextSibling.findAll(text=True)

       # key / value pairs are added to the dictionary 'text_d'
    textdict[key]=value

print textdict

commentdict = {}
for i in soup.find_all('w:comment'):
    key = i.attrs['w:id']
    value= ''.join(i.findAll(text=True)
    commentdict[key]=value
print commentdict

## OUTPUT {u'1': u'contradictory about news', u'0': u'something about news'}
##        {u'1': u'News; comment; negative', u'0': u'News; comment'}

## Added Code
for key in set(textdict) & set (commentdict):
    if textdict[key] == commentdict[key]:
        print 'yay'
4

1 に答える 1

1

括弧を閉じていないため、構文エラーがあります。

value= ''.join(i.nextSibling.findAll(text=True)
                                # -------------^ missing )

さらに数行が欠落しています:

value= ''.join(i.findAll(text=True)
                    # -------------^ missing )
于 2013-04-18T15:15:15.330 に答える