gpt4 book ai didi

python - Python : Another 'NoneType' object has no attribute error

转载 作者:行者123 更新时间:2023-12-03 08:02:42 25 4
gpt4 key购买 nike

对于新手练习,我试图在html文件中找到meta标签并提取生成器,所以我做到了:

Version = soup.find("meta", {"name":"generator"})['content']

而且由于我有这个错误:
TypeError: 'NoneType' object has no attribute '__getitem__'

我以为使用异常会纠正它,所以我写道:
try: Version = soup.find("meta", {"name":"generator"})['content']

except NameError,TypeError:

print "Not found"

我得到的是同样的错误。

那我该怎么办?

最佳答案

soup.find()方法未找到匹配的标签,并返回None
[...]项目访问语法会寻找__getitem__方法,这是AttributeError的来源:

>>> None[1]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'NoneType' object has no attribute '__getitem__'

明确测试 None:
Version = soup.find("meta", {"name":"generator"})
if Version is not None:
Version = Version['content']
else:
print "Not found"

如果您使用括号将异常分组,那么您的异常处理也将起作用:
try:
Version = soup.find("meta", {"name":"generator"})['content']
except (NameError, TypeError):
print "Not found"

如果没有括号,您将告诉Python捕获 NameError异常并将生成的异常对象分配给本地名称 TypeError。不推荐使用这种 except Exception, name:语法,因为它可能会导致您遇到两种异常的情况。

但是,此处的代码不应引发 NameError异常;那将是一个单独的问题,通过正确实例化变量可以更好地解决;以下在这里同样适用:
try:
Version = soup.find("meta", {"name":"generator"})['content']
except TypeError:
# No such meta tag found.
print "Not found"

关于python - Python : Another 'NoneType' object has no attribute error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19840182/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com