除非您知道我们不了解的内容,否则此代码是不正确的:

if isinstance(data, bytes):

data = data.decode()

您(似乎)不知道2700705067661001001728的编码。您假设它是UTF-8,但这很可能是错误的。 由于您不知道编码,因此没有文本。 您有字节,在阳光下可能有任何意义。

好消息是,大多数随机字节序列都不是有效的UTF-8,因此,如果中断,它将大声中断(默认为data),而不是默默地做错事。 更好的消息是,碰巧是有效UTF-8的大多数随机序列也都是有效ASCII,(几乎)每个人都同意如何解析。

坏消息是没有解决此问题的合理方法。 提供编码信息的标准方法是:使用data而不是bytes。如果某些第三方代码在没有任何其他上下文或信息的情况下将bytes或bytearray对象交给您,则唯一的正确操作是失败。

现在,假设您知道编码,则可以在此处使用data:

@functools.singledispatch

def foo(data, other_arguments, ...):

raise TypeError('Unknown type: '+repr(type(data)))

@foo.register(str)

def _(data, other_arguments, ...):

# data is a str

@foo.register(bytes)

@foo.register(bytearray)

def _(data, other_arguments, ...):

data = data.decode('encoding')

# explicit is better than implicit; don't leave the encoding out for UTF-8

return foo(data, other_arguments, ...)

这不适用于方法,并且data必须是第一个参数。 如果这些限制对您不起作用,请改用其他答案之一。

python中类似对象吗_确定对象是否为Python中类似字节的对象的正确方法是什么?...相关推荐

  1. python 结构体数组 定义_一篇文章弄懂Python中所有数组数据类型

    前言 数组类型是各种编程语言中基本的数组结构了,本文来盘点下Python中各种"数组"类型的实现. list tuple array.array str bytes bytearr ...

  2. python中流程图的基本元素_面试干货:成为Python程序员的终极指南!(内附回答)...

    科技行业正以前所未有的速度增长.我们看到市场上发布了新的软件产品. 无论您是初学者还是经验丰富的Python开发人员,机会都是非常多的,如何把握?. 唯一的要求:必须在Python编程面试中使用您的技 ...

  3. python全栈面试题_全栈工程师对Python面试中is和==区别的详细解说!看完真的学到了!...

    面试实习生的时候,当问到 is 和 == 的区别时,很多同学都答不上来,搞不清两者什么时候返回一致,什么时候返回不一致.本文我们来看一下这两者的区别. 我们先来看几个例子: a = "hel ...

  4. python中superclass是什么_深度解析并实现python中的super(转载,好文)

    大神半个月的成绩,让我看的叹为观止,建议看原帖地址,会让你对Python的描述符有更强的认识. 原文链接:https://blog.csdn.net/zhangjg_blog/article/deta ...

  5. python中class什么意思_【转载】在python的class中的,self到底是什么?

    答案:self可以理解为一个字典变量,内部存的就是对象的数据属性.如:{'name':'zhang','age':'18'}就是这些. 注意只有数据属性,并没有创建新的类的方法. 类-----> ...

  6. python的抽象类详解_第7.19节 Python中的抽象类详解:abstractmethod、abc与真实子类...

    第7.19节 Python中的抽象类详解:abstractmethod.abc与真实子类 一. 引言 前面相关的章节已经介绍过,Python中定义某种类型是以实现了该类型对应的协议为标准的,而不是以继 ...

  7. python中拼音怎么用_实用小技巧,Python一秒将汉字转为拼音

    大家好,欢迎来到Crossin的编程教室! 有时在处理文件时候,我们需要将中文汉字转换为拼音或者拼音首字母的需求:还有的时候,我们需要对汉字进行按拼音字母排序(汉字的默认排序是编码序而非拼音序).针对 ...

  8. java对象头_我的并发编程(二):java对象头以及synchronized升级过程

    一.概述 研究java对象头的目的是详细分析Java的synchronized锁的升级过程,因为synchronized在锁升级的时候,就是依赖对象头的信息来决定的.本博文针对64位的操作系统来对Ja ...

  9. python正则怎么取反_第11.19节 Python 中正则表达式的扩展功能:前视断言和前视取反...

    一.引言 在<第11.16节 Python正则元字符"()"(小括号)与组(group)匹配模式>中老猿介绍了组匹配模式的命名组功能及引用组功能,这两者都是组模式的扩展 ...

  10. python中面向对象空间时间_零基础老男孩学Python|面向对象之类的空间问题

    一. 类的空间问题 1.1 何处可以添加对象属性class A: def __init__(self,name): self.name = name def func(self,sex): self. ...

最新文章

  1. Android Application中的Context和Activity中的Context的异同
  2. ubuntu终端下快捷键,字体放大缩小等【逐渐完善篇】
  3. pycharm如何安装pythoncard_pycharm的各种设置,配置
  4. Spring Boot和数据库初始化
  5. linux-tomcat-install
  6. php 实现ftp 多文件,php – 使用一个连接读取FTP目录中每个文件的内容
  7. 《Hadoop权威指南》读书笔记1
  8. JavaScript函数的两种声明方式,你了解多少?
  9. 约瑟夫环问题:猴子选大王
  10. CentOS7搭建FTP文件服务器
  11. NO.5 计算数组中三个数的最大乘积
  12. 投资人教你怎么写能拿到钱的商业计划书
  13. 火山PC编辑框组件详解2
  14. 《代码整洁之道》第14章 逐步改进 的代码片段
  15. 游戏设计的236个技巧++游戏机制、关卡设计和镜头窍门pdf
  16. 苹果Mac更新系统版本失败如何解决?
  17. 【听】了不起的盖茨比,美国梦的破碎
  18. 【R语言 | 如何绘制带组内差异比较的柱形图】
  19. 根据指定时间范围取得对应(第几)周信息,以及一年当中所有周时间范围列表信息(可用于学期第几周,年第几周)
  20. Django学习笔记(3):使用模型类进行查询(查询函数、F对象、Q对象、聚合函数、查询集、模型类关系、关联查询、自关联、管理器)

热门文章

  1. Kaggle狗的种类识别竞赛——基于Pytorch框架的迁移学习方法
  2. 视觉平衡与物理平衡_设计中的视觉平衡
  3. Mysql动态数据多条件查询
  4. Deepin/Linux系统使用GUFW可视化管理、配置防火墙规则
  5. HBase timestamp(version)
  6. linux挂载分区至目录
  7. openshift介绍及centos7安装单节点openshift、Redhat安装openshift集群完全教程
  8. Python Django模板templates渲染及配置
  9. 图解Hadoop hdfs写数据流程
  10. Python Django 常用命令:创建迁移文件/数据库建表/创建admin超级用户