如何解决Python中的KeyError: 'name'错误
import re
from urllib import request
class Spider():
url = ‘https://www.panda.tv/cate/lol?pdt=1.24.s1.3.15r0uaprii3’
root_pattern = (’<div class=“video-info”>([\s\S]?)</div>’)
name_pattern = (’</i>([\s\S]?)</span>’)
number_pattern = (’<span class=“video-number”>([\s\S]*?)</span>’)
def __fetch_content(self):
r = request.urlopen(Spider.url)
htmls = r.read()
htmls = str(htmls,encoding=‘utf-8’)
return htmls
def __analysis(self,htmls):
root_html = re.findall(Spider.root_pattern,htmls)
anchors = []
for html in root_html:
name = re.findall(Spider.name_pattern,html)
nember = re.findall(Spider.number_pattern,html)
anchor = {‘nema’:name,‘nember’:nember}
anchors.append(anchor)
return anchors
def __refine(self,anchors):
l = lambda anchor: {
‘name’:anchor[‘name’][0].strip(),
‘nember’:anchor[‘nember’][0]
}
return map(l , anchors)
def __sort(self,anchors):
anchors = sorted(anchors,key=self.__sort_seed)
return anchors
def __sort_seed(self,anchor):
return anchor[‘nember’]
def __show(self,anchors):
for anchor in anchors:
print(anchor[‘name’] + ‘————’ + anchor[‘nember’])
def go(self):
htmls = self.__fetch_content()
anchors = self.__analysis(htmls)
anchors = list(self.__refine(anchors))
anchors = self.__sort(anchors)
self.__show(anchors)
spider = Spider()
spider.go()
如何解决Python中的KeyError: 'name’错误
‘name’:anchor[‘name’][0].strip()
没有 name 这个键值呗,你的程序需要多做一些异常判断。
没仔细看,md 是支持代码格式化的,你这样贴上来都没用看的欲望了 
KeyError: ‘name’ 这个错误说明你正在尝试访问字典(dict)里一个不存在的键(key)‘name’。
核心原因:你的代码里有一行类似 your_dict['name'] 的操作,但 your_dict 这个字典里根本没有叫 'name' 的键。
怎么解决?
最直接的办法就是用 .get() 方法。它比直接用中括号 [] 安全得多。
代码示例:
# 假设这是你的数据
user_data = {'id': 1, 'age': 30}
# ❌ 错误写法:如果键不存在,直接抛 KeyError
# user_name = user_data['name']
# ✅ 正确写法1:使用 .get() 方法,键不存在时返回 None(或你指定的默认值)
user_name = user_data.get('name') # 此时 user_name 为 None
print(user_name) # 输出: None
# ✅ 正确写法2:提供默认值
user_name = user_data.get('name', 'Unknown') # 键不存在时返回 'Unknown'
print(user_name) # 输出: Unknown
# ✅ 正确写法3:如果你明确需要键存在,可以先检查
if 'name' in user_data:
user_name = user_data['name']
# 处理 user_name
else:
# 处理键不存在的情况
print("'name' key is missing!")
其他常见场景:
-
从JSON API获取数据时:API返回的数据结构可能变化,用
.get()逐层安全访问。data = response.json() # 安全访问嵌套字典 city = data.get('address', {}).get('city', 'N/A') -
在循环或列表推导中:处理一批字典时,用
.get()避免单个错误导致整个程序崩溃。
一句话总结:用 dict.get(key, default) 代替 dict[key] 来安全地访问字典。
人家都给你解释得这么明白了,就没必要加 qq 微信打扰了吧
#2 不能,markdown 了解一下,不能发图我这个 doge 是哪里来的
爬虫的话用 bs4 或者其他的更方便
你的 name 拼成 nema 了
这几天看到两个拼写错误的帖子了😂😂😂
建议每次有拼写错误或者不细心又犯懒的时候就用力扇自己一耳光,可以加深记忆。
沃日,真的是单词错了,已经狠狠扇了自己两巴掌,感谢各位老哥了
以作伸手党为耻…
啪啪啪,再帮你来两下。/doge
建议使用一些代码校验的插件
建议你用 pycharm,可以有单词拼写检查,让英语小白少出一些错!


