【pyhton】python的基础字符串和编码

字符编码

计算机只能处理数字,如果要处理文本,就必须把文本转换为数字才能处理。

最早8个比特(bit)等于1个字节(byte)。表示最大整数为255(11111111)。美国采用ASCII编码,最早只有127个字符被编码到计算机,而处理中文最少需要2个字节,所以中国制定了GB2312编码,各国有了各国的编码,因此在多语言文本中,就会产生乱码,所以Unicode编码产生,既可以对英文编码,也可以对中文编码。但是ASCII编码通常用一个字节,而Unicode编码要用2个字节。如果都用Unicode编码,那么新的问题就是存储和传输的空间就要变得更大,因为节约,就产生了UTF-8编码,UTF-8把字母和汉字分为常用和不常用,常用的英文编成1个字节,常用的汉字编为3个字节。

现在在计算机中,统一使用Unicode编码,当要保存或者传输的时候就采用UTF-8编码。

比如在记事本里面编辑的时候,我们使用的是Unicode编码,当变成txt文件格式时,用UTF-8编码

浏览网页的时候,服务器把生成的Unicode内容转换为UTF-8传到浏览器,也就是用代码编网页的时候,用的是Unicode,当网页显示出来,我们看到的时候,为UTF-8编码。

 

在Python中,字符串用Unicode编码

1.整数编码

ord()函数,获取字符的整数表示,例如ord('A'),得到65,ord(‘中’),得到20013

chr()函数,把编码转换为对应的字符,chr(66),得到‘B’,chr(25591),得到‘文‘

还可以用十六进制写,例如‘\u4e2d\u6587’,得到‘中文’

2.字符与字节的转换(str与bytes的转换)

***Python对bytes类型的数据用带b前缀的单引号或者双引号表示。

转换原因:在网络上传输,或者保存到磁盘上,就需要把字符str变为字节bytes。

 

一个字符对应若干字节。所以str类型占用多个字节

byte的每个字符都占用一个字节。转换为byte后,所占字节数变少

 

例如:x=b'ABC'                  'ABC'和b‘ABC’,后者虽然内容显示和前者一样,但前者是字符str类型,一个字符占若干字节后者是bytes类型,每个字符占一个字节。

(1)encode()方法:把str可以编码为指定的bytes类型

     

我们对str类型的字符串‘ABC’进行ASCII编码,变为b'ABC',此时类型变为bytes类型

对含有汉字的str类型进行ASCII编码,产生错误,因为ASCII不能编码汉字,于是我们又用UTF-8编码将str类型的‘中文’转换为bytes类型b'\xe4\xb8\xad\xe6\x96\x87'

(2)decode()方法:将bytes类型指定编码为str类型

如果用bytes类型的汉字用ascii编码为str类型也是不可以的,如果bytes中包含无法解码的字节,也会报错

如果你忘记了一部分字节的utf-8的编码,而又不想程序出错,你可以在添加errors=‘ignore’,忽略错误的字节

3.len()方法:测出str类型的字符数或者bytes类型的字节数

一个中文字符被utf-8编码之后,占3个字节,1个英文字符只占1个字节。

在保存python源代码的时候,要指定格式为UTF-8编码,如果python解释器读取源代码的时候,也要按照utf-8编码读取,我们通常在python代码开头写上

#!/usr/bin/env python3

# -*- coding: utf-8 -*-

第一行是告诉Linux/os x系统,这是一个Python可执行程序,Windows会忽略这个注释

第二行是为了告诉Python解释器,要按照UTF-8编码读取源代码,否则会出现乱码。

要确保文本编辑器在使用UTF-8 without BOM编码

格式化字符串

-*-符号%就是用来格式化字符串的-*-

我们有时候会输出‘亲爱哒xxx你好,你的xx月的花费是xx,余额是xx’之类的字符串,其中xxx表示的内容都是根据输入的变量变化的。

在python中,输出字符串中变量的形式和C语言一样,用%实现。

如果格式化的字符串后面也就是%后面只跟一个参数,那么可以去掉括号。

%s表示用字符串替换,当你不清楚要输入什么类型时,%s永远起作用,它可以把任何数据类型转换为字符串。

上面是占位符和替换内容的对应

与C语言一样,当我们格式化字符串的时候,可以格式化整数和标点数,我们可以这样写%2d;%02d;%.2f,他们所代表的的内容依次是输出两位数的整数;输出两位数的整数,如果此时只有一位数,那么在首位补0;输出小数点后两位。

但是有时候我们需要在字符串里面输出%。就好像下面的情景

 

 

我们直接把%添加在里面,会报错,这个时候我们需要在%后面添加一个%,就好像我在python基础语法里面写的一样,我们需要转义,合法的输出我们需要输出的。

format():格式化字符串的方法

format()方法会用传入的参数一次替换字符串的占位符{0},{1},{2}......,这种方法比较麻烦,但是当数据多的时候,不容易出错。

当我们要在后面添加.1f时,需要在序号数字后面打上':',序号里面不需要特别说明变量的类型

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值