Python如何提取HTTP响应头长字符串中等号后指定键的取值
以下两种方案均可以快速完成提取,优先推荐使用标准库方案,兼容性更强、不易出错。
方法1:使用Python标准库http.cookies(推荐)
http.cookies是Python自带的专门处理HTTP Cookie的模块,无需安装第三方依赖,可自动兼容各种标准Cookie格式,自动忽略Secure、Path等属性字段。
from http.cookies import SimpleCookie # 你的原始Set-Cookie字符串 raw_cookie = "csrftoken=##10882d8a32354e7e7e518beebf1d531d18788899; Secure; Path=/, session=75bcede9f0192ed2_619d5819.Qa4dv5iN0lHFkLWcdcDTzjvaabb; Secure; HttpOnly; Path=/" cookie = SimpleCookie() cookie.load(raw_cookie) # 直接按键名取值即可 csrftoken = cookie["csrftoken"].value session = cookie["session"].value print(csrftoken) # 输出:##10882d8a32354e7e7e518beebf1d531d18788899 print(session) # 输出:75bcede9f0192ed2_619d5819.Qa4dv5iN0lHFkLWcdcDTzjvaabb
方法2:正则表达式快速提取
如果是临时处理固定格式的字符串,不想导入额外模块,也可以用正则匹配快速取值:
import re raw_cookie = "csrftoken=##10882d8a32354e7e7e518beebf1d531d18788899; Secure; Path=/, session=75bcede9f0192ed2_619d5819.Qa4dv5iN0lHFkLWcdcDTzjvaabb; Secure; HttpOnly; Path=/" csrftoken = re.search(r'csrftoken=([^;]+)', raw_cookie).group(1) session = re.search(r'session=([^;]+)', raw_cookie).group(1)
正则规则([^;]+)的作用是匹配键名后从等号开始到第一个分号之前的所有字符,刚好对应目标值。如果不确定对应键是否一定存在,可以加判空逻辑避免抛出异常:
match = re.search(r'csrftoken=([^;]+)', raw_cookie) csrftoken = match.group(1) if match else None
内容的提问来源于stack exchange,提问作者Edison Wang
相关产品推荐
相关产品推荐

