python二进制串转字符串的方法详解

 更新时间:2023年11月04日 09:44:58   作者:惊瑟  
这篇文章主要介绍了python二进制串转字符串的方法详解,使用json,可以自动检测编码,但需要注意的是,它返回的是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实现七彩蟒蛇绘制实例代码

    Python实现七彩蟒蛇绘制实例代码

    这篇文章主要介绍了Python实现七彩蟒蛇绘制实例代码,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01
  • Python子类继承父类构造函数详解

    Python子类继承父类构造函数详解

    在本文里我们给大家分享一篇关于Python 子类继承父类构造函数的相关知识点内容,需要的朋友们跟着学习下。
    2019-02-02
  • python ipset管理 增删白名单的方法

    python ipset管理 增删白名单的方法

    今天小编就为大家分享一篇python ipset管理 增删白名单的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • Python中整数的缓存机制讲解

    Python中整数的缓存机制讲解

    今天小编就为大家分享一篇关于Python中整数的缓存机制讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-02-02
  • 使用Python处理CSV和Excel文件的操作方法

    使用Python处理CSV和Excel文件的操作方法

    在数据分析、自动化和日常开发中,CSV和Excel文件是非常常见的数据存储格式,ython提供了强大的工具来读取、编辑和保存这两种文件,满足从基本读取到复杂分析的需求,本文将深入介绍CSV和Excel文件的多种处理方法,帮助你更好地管理和分析数据,需要的朋友可以参考下
    2025-01-01
  • Sanic框架配置操作分析

    Sanic框架配置操作分析

    这篇文章主要介绍了Sanic框架配置操作,简单分析了Sanic框架中常见的加载配置使用方法,并简单说明了内置配置的预定义变量与对应功能,需要的朋友可以参考下
    2018-07-07
  • 使用Python和Plotly绘制各种类型3D图形的方法

    使用Python和Plotly绘制各种类型3D图形的方法

    Python语言拥有丰富的数据可视化库,其中Plotly是一款流行的工具,提供了绘制高质量三维图形的功能,本文将介绍如何使用Python和Plotly来绘制各种类型的3D图形,并给出代码实例,需要的朋友可以参考下
    2024-05-05
  • 基于keras 模型、结构、权重保存的实现

    基于keras 模型、结构、权重保存的实现

    今天小编就为大家分享一篇基于keras 模型、结构、权重保存的实现,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-01-01
  • 一篇文章搞懂Python的文件路径操作

    一篇文章搞懂Python的文件路径操作

    这篇文章主要给大家介绍了关于Python文件路径操作的相关资料,在python中我们会经常的对文件使用路径,文件路径通常有两种,分别为绝对路径、相对路径,需要的朋友可以参考下
    2023-07-07
  • python输出结果刷新及进度条的实现操作

    python输出结果刷新及进度条的实现操作

    这篇文章主要介绍了python输出结果刷新及进度条的实现操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07

最新评论