0

我查看了许多现有的 nameErrors 和未定义的变量帖子,不幸的是无法解决我的问题。我对编程,尤其是 Python 比较陌生。

我有一个在 informcast_data.py 中定义的字典:

allLinks = {'Send or Edit Messages': {'link':'/InformaCast/admin?cmd=listMessages',   'page_title': 'Messages: Send or Edit Messages'}

我正在将 informacast_data.py 导入 users.py:

from informacast.informacast_data import ICData

然后我有一个函数,verify_links,它具有以下 for 语句:

for href_link in hrefs:
    if href_link.find(ICData.allLinks['page_title']['link'])!=-1:
        self.logger.debug("verify_links found=True for " + str(href_link))
        found=True

如果我在 page_title 周围留下引号,我会得到一个 keyError,并且我被告知要删除引号,因为它是一个变量而不是字符串,当我删除引号时我会得到 nameError,我不确定如何继续。

以下是完整的追溯:

Traceback (most recent call last):
  File "C:\Users\jesse.sole\Jesse_Workspace\trunk\src\informacast\tests\users.py", line 17, in test_appadmin_role
    self.verify_role("appAdmin")
  File "C:\Users\jesse.sole\Jesse_Workspace\trunk\src\informacast\tests\users.py", line 78, in verify_role
    self.verify_links(sel, roleName)
  File "C:\Users\jesse.sole\Jesse_Workspace\trunk\src\informacast\tests\users.py", line 104, in verify_links
    if href_link.find(ICData.allLinks[page_title]['link'])!=-1:
NameError: global name 'page_title' is not defined

提前感谢您的任何帮助。

4

1 回答 1

0

allLinks是一个嵌套字典。顶层没有page_title键,所以这就是为什么你会得到一个键错误:

>>> allLinks = {'Send or Edit Messages': {'link':'/InformaCast/admin?cmd=listMessages',   'page_title': 'Messages: Send or Edit Messages'}}
>>> allLinks['page_title']                                                                                                      
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'page_title'

但是嵌套字典中有这样一个键:

>>> allLinks['Send or Edit Messages']['page_title']
'Messages: Send or Edit Messages'

认为您想定义一个page_title具有以下值的变量'Send or Edit Messages'

>>> page_title = 'Send or Edit Messages'
>>> allLinks[page_title]['link']
'/InformaCast/admin?cmd=listMessages'

如果您遍历其中的键allLinks,则可以:

for href_link in hrefs:
    for page_title in ICData.allLinks:
        if href_link.find(ICData.allLinks[page_title]['link'])!=-1:
            self.logger.debug("verify_links found=True for " + str(href_link))
            found=True
于 2013-02-06T16:59:12.610 回答