首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从包含Bytes数据的字符串中提取Bytes

从包含Bytes数据的字符串中提取Bytes
EN

Stack Overflow用户
提问于 2019-09-10 02:25:09
回答 2查看 2K关注 0票数 0

我对python 3很陌生,并试图从包含消息中的字符串和字节的字节数组中提取消息。

我无法从解码字节数组中提取字节消息。

  1. 首先,对字节数组进行解码。
  2. 然后我对解码后的数组进行分割。
  3. 我在分割数组时得到字符串值。

我试图使用bytes(v) for v in rest.split()函数尝试获取字节数组,然后对其进行解码,但未能做到。

代码语言:javascript
复制
# The message chunk:
chunk = b"1568077849\n522\nb'l5:d4:auth53:\xc3\x99\xc3\xac\x1fH\xc2\xa3ei6eli1eee'\n"

# I split the chunk into sub categories for further processing:
_, size, rest = (chunk.decode("utf-8")).split('\n', 2)

# _ contains "1568077849"
# size contains "522" 
# rest contains "b'l5:d4:auth53:\xc3\x99\xc3\xac\x1fH\xc2\xa3ei6eli1eee'"

我应该能够解码rest变量(rest.decode("utf-8")),但是由于它被存储为字符串,我很难弄清楚如何将其转换为字节,然后解码值。

预期结果:l5:d4:auth53:ÙìH£ei6eli1eee

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-09-10 03:09:47

这将打印您的最终结果:

代码语言:javascript
复制
chunk = b"1568077849\n522\nb'l5:d4:auth53:\xc3\x99\xc3\xac\x1fH\xc2\xa3ei6eli1eee'\n"

l1 = chunk.decode('utf-8').split()[2:]  # Initial decode
#  slice out the embedded byte string "b'  '" characters
l1_string = ''.join([x[:-2] if x[0] != 'b' else x[2:] for x in l1])
l1_bytes = l1_string.encode('utf-8')
l1_final = l1_bytes.decode('utf-8')

print('Results')
print(f'l1_string is {l1_string}')
print(f'l1_bytes is {l1_bytes}')
print(f'l1_final is {l1_final}')
代码语言:javascript
复制
Results
l1_string is l5:d4:auth53:ÙìH£ei6eli1ee
l1_bytes is b'l5:d4:auth53:\xc3\x99\xc3\xacH\xc2\xa3ei6eli1ee'
l1_final is l5:d4:auth53:ÙìH£ei6eli1ee
票数 2
EN

Stack Overflow用户

发布于 2019-09-10 15:11:11

我能够以这种方式获得预期的输出:

代码语言:javascript
复制
 _, size, rest = (chunk.decode("utf-8")).split('\n', 2)
 rest = bytes(rest.replace("b'", "").replace("'", ""), "utf-8").decode("unicode_escape")

从这篇文章中得到了线索:Process escape sequences in a string in Python

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57863250

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档