Python3 数据结构中字节转字符串问题如何解决?

求问大佬,{b'status': b'Starting', b'CreateTime': b'1days', b'FinishedTime': b'2days'} 怎么才能将上面的字典中字节高效的转换成字符串

{'status': 'Starting', 'CreateTime': '1days', 'FinishedTime': '2days'}


Python3 数据结构中字节转字符串问题如何解决?
6 回复

<br>In [1]: d1 = {b'status': b'Starting', b'CreateTime': b'1days', b'FinishedTime': b'2days'}<br><br>In [2]: d1<br>Out[2]: {b'status': b'Starting', b'CreateTime': b'1days', b'FinishedTime': b'2days'}<br><br>In [3]: d2 = {k.decode('utf-8'): v.decode('utf-8') for k, v in d1.items()}<br><br>In [4]: d2<br>Out[4]: {'status': 'Starting', 'CreateTime': '1days', 'FinishedTime': '2days'}<br><br>In [5]:<br>

like this?


在Python 3里,字节(bytes)转字符串(str)最直接的方法是调用.decode()方法。你需要指定正确的编码,通常是'utf-8'

核心代码示例:

# 假设你有一个字节对象
byte_data = b'Hello, World!'

# 使用 decode 方法将其转换为字符串
# 默认使用 utf-8 编码,你也可以明确指定
string_data = byte_data.decode('utf-8')

print(string_data)  # 输出: Hello, World!
print(type(string_data))  # 输出: <class 'str'>

关键点:

  1. 编码必须匹配:字节本身没有“编码”信息,你必须知道它当初是用什么编码(如UTF-8, GBK, ASCII)创建的,解码时就用同样的编码。用错编码(比如UTF-8字节用GBK解码)会导致UnicodeDecodeError或乱码。
  2. 处理错误:如果字节序列包含无效字符,解码会失败。你可以通过errors参数处理,比如byte_data.decode('utf-8', errors='ignore')(忽略错误)或errors='replace'(用替换字符�代替)。

一句话总结:用.decode('正确的编码')来转,确保编码别搞错。

实在不行只能这样了,难道 python3 没有相关的 API 吗。。。

别去特意追求 Pythonic

高效?写 c 吧

import simplejson as json
json.loads(json.dumps({b’status’: b’Starting’, b’CreateTime’: b’1days’, b’FinishedTime’: b’2days’}))

回到顶部