不明白为什么我得到列表索引错误

时间:2017-09-12 16:35:41

标签: python list

我正在编写一些代码来自动执行某些b2b电子邮件抓取工作。我有一个函数,hunter.domain_search(url),它输出一个带有列表的字典作为这样的一些键

{
    'domain': 'turbotitleloan.com',
    'webmail': False,
    'pattern': None,
    'organization': None,
    'emails': [
        {
            'value': 'support@turbotitleloan.com',
            'type': 'generic',
            'confidence': 6,
            'sources': [
                {
                    'domain': 'turbotitleloan.com',
                    'uri': 'http://turbotitleloan.com/car-title-loans/title-loan-faqs',
                    'extracted_on': '2016-06-10'
                },
                {
                    'domain': 'turbotitleloan.com',
                    'uri': 'http://turbotitleloan.com/contact',
                    'extracted_on': '2016-06-10'
                },
                {
                    'domain': 'turbotitleloan.com',
                    'uri': 'http://turbotitleloan.com/faq',
                    'extracted_on': '2015-01-30'
                }
            ],
            'first_name': None,
            'last_name': None,
            'position': None,
            'linkedin': None,
            'twitter': None,
            'phone_number': None
        },
        {
            'value': 'underwriting@turbotitleloan.com',
            'type': 'generic',
            'confidence': 5,
            'sources': [
                {
                    'domain': 'turbotitleloan.com',
                    'uri': 'http://turbotitleloan.com/faq',
                    'extracted_on': '2016-05-02'
                },
                {
                    'domain': 'turbotitleloan.com',
                    'uri': 'http://turbotitleloan.com/car-title-loans/what-to-expect',
                    'extracted_on': '2016-06-10'
                },
                {
                    'domain': 'turbotitleloan.com',
                    'uri': 'http://turbotitleloan.com/car-title-loans/title-loan-faqs',
                    'extracted_on': '2016-06-10'
                }
            ],
            'first_name': None,
            'last_name': None,
            'position': None,
            'linkedin': None,
            'twitter': None,
            'phone_number': None
        }
    ]
}

我希望我的代码返回与键值相关联的值,这只是一系列电子邮件地址。 Urls只是一个域名列表。在这里,我认为我的问题是

for url in urls:
    result=hunter.domain_search(url)
    nResult=result['emails']
    nResult[0]['value']

它输出一个电子邮件地址,然后我得到一个列表索引超出范围错误。我没理解为什么我遇到这个错误。每次进入循环时,它使用一个新列表,并且所有这些列表都应该有第一个元素,这是我要访问的字典存储的位置。那么为什么我的循环在第一个列表上工作,而不是在后续列表上呢?

1 个答案:

答案 0 :(得分:1)

索引错误可能是由函数返回带有空emails列表的结果引起的。尝试此操作以跳过没有电子邮件的条目。

for url in urls:
    result=hunter.domain_search(url)
    nResult=result['emails']
    if nResult:
        print(nResult[0]['value'])
    else: 
        print('no emails found in', url)