使用python获取响应体的一部分

2024-09-30 04:28:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我收到服务器的响应:

B�
QeyJhbGciOiJIUzI1NiJ9.Mzc1Mjk4MjUzNjA1.PFblnWR46sByMIZX2fmot9SB8CNYDwHyDOduIf29Gn8$04059f6f-sdfs-2df2-lj2k-ce310d7e3e8c"5ecf7534b4ccd20100d29378*�所

在对响应使用编码后:

response = r.text.encode('utf8')

我的响应变量中有以下内容:

b'B\xe2\x80\xba\x01\nQeyJhbGciOiJIUzI1NiJ9.Mzc1Mjk4MjUzNjA1.GKjZw55OvoNpH4vOw0jMSQoCYQ3mIn4b0Hq7Ye5S3wA\x12$04059f6f-sdfs-2df2-lj2k-ce310d7e3e8c"\x185ecf7534b4ccd20100d29378*\x06\x08\xc3\x80\xc2\xa4\xc3\x93\xe2\x82\xac\x01'

我正在努力使用不同的方法获取此部件04059f6f-sdfs-2df2-lj2k-ce310d7e3e8c,如

result = re.search('\x12$(.*)\x18', response)
print(result)

结果=无

我试图实现的是将04059f6f-sdfs-2df2-lj2k-ce310d7e3e8c作为文本

有什么想法或建议吗

编辑:我已经从响应中删除了“**”字符,因为这是为了将必要的部分加粗


Tags: 服务器编码responseresultxe2x01x12x80
2条回答

转义$字符并将字符分组以避免调用split

re.search('(\x12\$)(.*)(\x18)', response.decode('utf-8'))[2]
Out[38]: '04059f6f-sdfs-2df2-lj2k-ce310d7e3e8c"'

如果数据以字节为单位,则应使用搜索字节

但主要的问题是$在regex中有特殊的含义-行尾-您必须使用\$

import re

data = b'B\xe2\x80\xba\x01\nQeyJhbGciOiJIUzI1NiJ9.Mzc1Mjk4MjUzNjA1.GKjZw55OvoNpH4vOw0jMSQoCYQ3mIn4b0Hq7Ye5S3wA\x12$04059f6f-sdfs-2df2-lj2k-ce310d7e3e8c"\x185ecf7534b4ccd20100d29378*\x06\x08\xc3\x80\xc2\xa4\xc3\x93\xe2\x82\xac\x01'

result = re.search(b'\$(.*)"', data)
print(result[1].decode())

相关问题 更多 >

    热门问题