(更新): 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'