如何显示附加列表中的单独值

How to show separate values from appended list

我正在尝试显示使用 bs4 抓取的附加项目列表中的值。目前,我的代码只有 returns 一整套数据,但我希望从数据中显示单独的值。现在,我得到的是:

NameError: value is not defined.

怎么做?

data = []

for e in soup.select('div:has(> div > a h3)'):
    data.append({
        'title':e.h3.text,
        'url':e.a.get('href'),
        'desc':e.next_sibling.text,
        'email': re.search(r'[\w.+-]+@[\w-]+\.[\w.-]+', e.parent.text).group(0) if 
re.search(r'[\w.+-]+@[\w-]+\.[\w.-]+', e.parent.text) else None
    })

data

title = print(title) # name error
desc = print(desc) # name error
email = print(email) # name error

你可以这样做:

for e in soup.select('div:has(> div > a h3)'):
    title=e.h3.text,
    url=e.a.get('href'),
    desc=e.next_sibling.text,
    email= re.search(r'[\w.+-]+@[\w-]+\.[\w.-]+', e.parent.text).group(0) if re.search(r'[\w.+-]+@[\w-]+\.[\w.-]+', e.parent.text) else None


    print(title)
    print(desc) 
    print(email)
    print(url)
        

主要问题是您尝试仅在 keys 上引用,而没有考虑 data 一个字典列表。

所以如果你想打印一个特定的字典,你必须通过索引从 data 中选择你的字典:

print(data[0]['title'])
print(data[0]['desc']) 
print(data[0]['email'])

替代方案只是在每个字典的值上迭代 data 和 print/operate:

for d in data:
    print(d['title'])
    print(d['desc']) 
    print(d['email'])

for d in data:
    title = d['title']
    desc = d['desc']
    email = d['email']
    
    print(f'print title only: {title}')