首页 > 编程语言 >Effective Python:第3条 了解bytes与str的区别

Effective Python:第3条 了解bytes与str的区别

时间:2024-04-16 19:12:49浏览次数:32  
标签:__ utf Effective Python bytes str print

Python有两种类型可以表示字符序列:一种是bytes,另一种是str。bytes实例包含的是原始数据,即8位的无符号值(通常按照ASCII编码标准来显示)。str实例包含的是Unicode码点(code point,也叫作代码点)。

注意点:

1,bytes和str并不兼容。在传递字符序列的时候需要注意。

a = b"h\x65llo"
b = "world"

# 可行的
print("%s" % a)
# b'hello', 可行原因:执行print时,会调用bytes的__repr__方法;
# 而type(repr(bytes))是str类型,所以可替换%s

# 不可行
print(b"%s" % b)
# TypeError: %b requires a bytes-like object,
# or an object that implements __bytes__, not 'str'
# 不可行原因:不知道str应该按照什么方案来编码
print(a + b)  # TypeError: can't concat str to bytes

2,操作文件时,需要注意编码格式。

with open('file/student.bin', 'r') as f:
    print(f.read())
# UnicodeDecodeError:
# 'utf-8' codec can't decode byte 0x87 in position 10: invalid start byte
原因:r默认是以文本方式读取,默认编码为utf-8,当文件不为utf-8格式时,就会异常

两种解决方式:

  1,使用rb进行读取;

  2,指定encoding编码格式;

 

标签:__,utf,Effective,Python,bytes,str,print
From: https://www.cnblogs.com/guo126/p/18138980

相关文章

  • range函数python用法
    range函数python用法概述range()是python的一个内置函数,用来创建一个整数序列,常用于for循环中。理解range()的运用会对我们使用循环很有帮助。语法range函数语法格式如下:-start:序列的起始数值,默认从0开始-stop:序列结束的数值(不包含在序列中)-step:步长,默认为1参数说明......
  • python-函数参数的学习
    '''函数的参数实际上是实际参数传给形式参数的过程通用性更强,可以理解为一个模版'''#defadd(a,b):#a,b是形参#print(a+b)#add(2,3)#传递参数'''1.必选参数,定义了几个,就必须传几个'''#deffunb(a,b):#result=a-b#print(result)#funb......
  • Python 入门指南(四)
    原文:zh.annas-archive.org/md5/97bc15629f1b51a0671040c56db61b92译者:飞龙协议:CCBY-NC-SA4.0第十章:哈希和符号表我们之前看过列表,其中项目按顺序存储并通过索引号访问。索引号对计算机来说很有效。它们是整数,因此它们快速且易于操作。但是,它们并不总是对我们很有效。例如,......
  • Python 入门指南(五)
    原文:zh.annas-archive.org/md5/97bc15629f1b51a0671040c56db61b92译者:飞龙协议:CCBY-NC-SA4.0第十六章:Python中的对象因此,我们现在手头上有一个设计,并且准备将该设计转化为一个可工作的程序!当然,通常情况下不会这样。我们将在整本书中看到好的软件设计示例和提示,但我们的重......
  • Python 入门指南(六)
    原文:zh.annas-archive.org/md5/97bc15629f1b51a0671040c56db61b92译者:飞龙协议:CCBY-NC-SA4.0第十九章:何时使用面向对象编程在之前的章节中,我们已经涵盖了面向对象编程的许多定义特性。我们现在知道面向对象设计的原则和范例,并且我们已经涵盖了Python中面向对象编程的语......
  • Python 入门指南(七)
    原文:zh.annas-archive.org/md5/97bc15629f1b51a0671040c56db61b92译者:飞龙协议:CCBY-NC-SA4.0第二十二章:Python设计模式I在上一章中,我们简要介绍了设计模式,并介绍了迭代器模式,这是一个非常有用和常见的模式,以至于它已经被抽象成了编程语言本身的核心。在本章中,我们将回顾......
  • Python 比特币编程实用指南(全)
    原文:zh.annas-archive.org/md5/2feb12244d893eae70a77f3f952c5da5译者:飞龙协议:CCBY-NC-SA4.0前言在本书中,您将介绍比特币和区块链,以及如何参与比特币生态系统。您将了解比特币及其特性、区块链以及两者如何共同工作。您还将学习如何使用Pi比特币工具来用Python编程比......
  • Python 入门指南(三)
    原文:zh.annas-archive.org/md5/97bc15629f1b51a0671040c56db61b92译者:飞龙协议:CCBY-NC-SA4.0第六章:算法设计原则我们为什么要学习算法设计?当然有很多原因,我们学习某事的动机很大程度上取决于我们自己的情况。对于对算法设计感兴趣有重要的职业原因。算法是所有计算的基础......
  • Python 物联网入门指南(五)
    原文:zh.annas-archive.org/md5/4fe4273add75ed738e70f3d05e428b06译者:飞龙协议:CCBY-NC-SA4.0第十四章:文件I/O和Python工具在本章中,我们将详细讨论文件I/O,即读取、写入和追加文件。我们还将讨论Python工具,这些工具使得操作文件和与操作系统交互成为可能。每个主题都......
  • Python 物联网入门指南(二)
    原文:zh.annas-archive.org/md5/4fe4273add75ed738e70f3d05e428b06译者:飞龙协议:CCBY-NC-SA4.0第三章:使用Python进行自动化和提高生产力在本章中,我们将涵盖以下主题:使用Tkinter创建图形用户界面创建一个图形启动菜单应用程序在应用程序中显示照片信息自动整......