python-3.x - 我如何解码字节字符串以存储在没有空字节和人类可读的字符串变量中?
问题描述
我从 zip 文件中的文本文件中读取了一些行,并且必须修改为可读字符串。例如,我从文件显示中得到的一行是这样的:
byte_code = b"\x000\x002\x002\x008\x007\x00:\x00,\x00'\x001\x004\x00.\x001\x002\x00.\x002\x000\x001\x009\x00 \x002\x000\x00:\x002\x008\x00:\x002\x007\x00'\x00,\x00$\x000\x001\x00F\x00B\x00,\x00,\x00,\x00,\x00\r\x00\n"
如果我解码并打印它,我会得到一个 readabel 结果(所以输出中有一些空字节,我无法输入她
print(byte_code.decode('latin-1'))
我想得到可读的结果,就像打印函数进入一个没有空字节的普通字符串变量一样,我期望这一行
02287:,'14.12.2019 20:28:27',$01FB,,,,
但是如果我将解码行分配给一个字符串变量,我会得到这个不可读的字符串
mystr = byte_code.decode('latin-1')
mystr
Out[55]: "\x000\x002\x002\x008\x007\x00:\x00,\x00'\x001\x004\x00.\x001\x002\x00.\x002\x000\x001\x009\x00 \x002\x000\x00:\x002\x008\x00:\x002\x007\x00'\x00,\x00$\x000\x001\x00F\x00B\x00,\x00,\x00,\x00,\x00\r\x00\n"
字节串的解码是否具有正确的编码格式?我如何获得没有空字节的正确可读字符串?
解决方案
这可能不是完美的答案,但它可能是一个快速的解决方案,直到出现更好的解决方案。
byteLine = b"\xff\xfe0" + byte_code + b"\x00"
strLine = byteLine.decode('utf16')
那么 strLine 值是:
In [1] : strLine
Out[2] : "002287:,'14.12.2019 20:28:27',$01FB,,,,\r\n"
推荐阅读
- visual-studio - 在 Unity 和 Vuforia 中分别区分图像目标和中继音频
- python - 学习 Python,解析 JSON 文件中的某些值时遇到问题
- web-scraping - 为什么在 Beautiful Soup 中使用 attrs 进行抓取
- git - Gitlab 仓库不见了
- azure-ad-b2c - id 和访问令牌的不同声明
- javascript - 我正在尝试使用 Javascript 函数更改为另一个 htm
- c# - 没有 ObjectID 的 MongoDb C# 类
- javascript - 不使用 allErrors 的带有 ajv 的自定义错误消息:true
- slack - Slack API - 仅对公共频道中的一组用户可见的持久消息
- vim - 交换行中的 1 和 0