Python3 数据结构中字节转字符串问题如何解决?
求问大佬,{b'status': b'Starting', b'CreateTime': b'1days', b'FinishedTime': b'2days'} 怎么才能将上面的字典中字节高效的转换成字符串
{'status': 'Starting', 'CreateTime': '1days', 'FinishedTime': '2days'}
Python3 数据结构中字节转字符串问题如何解决?
<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'>
关键点:
- 编码必须匹配:字节本身没有“编码”信息,你必须知道它当初是用什么编码(如UTF-8, GBK, ASCII)创建的,解码时就用同样的编码。用错编码(比如UTF-8字节用GBK解码)会导致
UnicodeDecodeError或乱码。 - 处理错误:如果字节序列包含无效字符,解码会失败。你可以通过
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’}))

