0

(更新):添加代码以根据它们的 id 匹配值。问题:为什么两个字典中的匹配 id u'1' 和 'u'0' 都无法识别?

(代码目标):我正在编写一个脚本,该脚本从 .docx 文件中获取注释文本,并通过 xml 标签 ID 将其与注释匹配。我设法提取了评论标签、文本和 ID。我现在需要匹配这些。我的策略是创建两个字典:1)一个以 id 作为键,将注释文本作为值,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 回答