You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何按\r\n分割字符串提取HTTP响应头并排除报文体

问题根源

你遇到的是转义字符解析问题:你拿到的返回字符串里的\r\n是字面量转义组合,实际存储为\+r+\+n四个普通字符,不是HTTP协议里标准的回车换行控制符,所以直接用splitlines()或者匹配控制符的正则无法正常分割。

解决方法

两种实现方式都可以实现分割+排除报文体的需求:

方式1:直接用split方法(更简单,无需引入正则)

用原始字符串标识分隔符,匹配字面量\r\n,分割后遍历遇到空行直接终止(HTTP头和报文体之间用连续两个\r\n分隔,分割后会生成空字符串,刚好作为终止标记)

# 分割字符串
header_list = webinformation.split(r'\r\n')

# 逐行打印头信息,遇到空行停止(自动排除报文体)
for line in header_list:
    if not line.strip():
        break
    print(line)

方式2:正则分割实现

正则匹配时同样要用原始字符串标识匹配规则:

import re

header_list = re.split(r'\\r\\n', webinformation)
for line in header_list:
    if not line.strip():
        break
    print(line)

原有代码报错原因

  • splitlines()方法只能识别ASCII标准的回车、换行控制符,无法识别字面量的\r\n组合,因此无法完成分割
  • 之前的正则写法re.split('\\r\\n', webinformation)中,传入的规则会被Python先转义为真实的回车换行控制符,和你字符串里的字面量\r\n不匹配,因此分割失败

测试示例

用你提供的示例字符串测试效果:

webinformation = 'HTTP/1.1 400 Bad Request\\r\\nDate: Tue, 26 Oct 2021 11:26:46 GMT\\r\\nServer: Apache\\r\\n\\r\\n这里是报文体内容,会被自动排除'
header_list = webinformation.split(r'\r\n')
for line in header_list:
    if not line.strip():
        break
    print(line)

运行输出:

HTTP/1.1 400 Bad Request
Date: Tue, 26 Oct 2021 11:26:46 GMT
Server: Apache

内容的提问来源于stack exchange,提问作者jennifer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 17:57:05