python二进制串转字符串的方法详解
一、不含中文
首先明确b'xxx'这种样式的不是字符串类型,而是二进制数据:
In [1]: s = 'hello world' In [2]: s.encode('ascii') Out[2]: b'hello world' In [3]: type(s) Out[3]: str In [4]: type(s.encode('ascii')) Out[4]: bytes
如果不含中文,直接使用str/decode均可,但str出来的多了个b',需要注意:
In [5]: b = s.encode('ascii') In [6]: b Out[6]: b'hello world' In [7]: str(b) Out[7]: "b'hello world'" In [8]: b.decode('utf-8') Out[8]: 'hello world'
二、含有中文
假设得到一个这样的二进制串:
b'\xe5\x93\x88\xe5\x96\xbd'
如果对编码比较熟悉的伙伴直接看出来这是utf-8编码的二进制串,此时直接解码即可:
In [15]: b Out[15]: b'\xe5\x93\x88\xe5\x96\xbd' In [16]: b.decode('utf-8') Out[16]: '哈喽'
假设得到一个这样的二进制串:
b'{"errno":0,"data":[{"k":"\\u5468\\u6770\\u4f26","v":"\\u540d. Jay Chou; The New King of Asian Pop \\u4ee3. \\u65e0\\u4e0e\\u4f26\\u6bd4"}]}'
\u开头稍微有点陌生,但搜索一下可以查到解码方法:
In [17]: b'{"errno":0,"data":[{"k":"\\u5468\\u6770\\u4f26","v":"\\u540d. Jay Cho ...: u; The New King of Asian Pop \\u4ee3. \\u65e0\\u4e0e\\u4f26\\u6bd4"}]}' ...: .decode('unicode_escape') Out[17]: '{"errno":0,"data":[{"k":"周杰伦","v":"名. Jay Chou; The New King of Asian Pop 代. 无与伦比"}]}'
三、简便方法
上述方法需要提前知道编码,有一种简便方法:使用json,可以自动检测编码,但需要注意的是,它返回的是python对象,不一定是字符串,具体是什么对象要视原始内容而定:
In [20]: json.loads(b'{"errno":0,"data":[{"k":"\\u5468\\u6770\\u4f26","v":"\\u540d. Jay Chou; The New King of Asian Pop \\u ...: 4ee3. \\u65e0\\u4e0e\\u4f26\\u6bd4"}]}') Out[20]: {'errno': 0, 'data': [{'k': '周杰伦', 'v': '名. Jay Chou; The New King of Asian Pop 代. 无与伦比'}]}
到此这篇关于python二进制串转字符串的方法详解的文章就介绍到这了,更多相关python二进制串转字符串内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Python实现爬虫抓取与读写、追加到excel文件操作示例
这篇文章主要介绍了Python实现爬虫抓取与读写、追加到excel文件操作,结合具体实例形式分析了Python针对糗事百科的抓取与Excel文件读写相关操作技巧,需要的朋友可以参考下2018-06-06django配置DJANGO_SETTINGS_MODULE的实现
本文主要介绍了django配置DJANGO_SETTINGS_MODULE,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2022-03-03tensorflow中tf.slice和tf.gather切片函数的使用
今天小编就为大家分享一篇tensorflow中tf.slice和tf.gather切片函数的使用,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2020-01-01
最新评论