Python 从入门到实战13(字符串简介)

· 我们的目标是:通过这一套资料学习下来,通过熟练掌握python基础,然后结合经典实例、实践相结合,使我们完全掌握python,并做到独立完成项目开发的能力。

上篇文章我们通过举例学习了流程控制语句中的循环语句。今天继续讨论基本数据类型:字符串。

字符串是连续的字符序列,也是序列的一种。

1、字符串定义

字符串是一种序列,一般是双引号或者单引号括起来的元素序列。其中若使用'' 单引号或者双引号""字符序列需要在同一行,若是使用''' ''' 三引号可以分布在连续的多行。

举例说明:

#coding=utf-8

str1 = "我爱祖国!"

str2 = 'abcde'

str3 = '''我是男生,喜欢

打篮球。

'''

print(str1)

print(str2)

print(str3)

输出结果:

2、常见的转义字符

\ -------续行符

\n -------换行符

\0 -------空

\t --------水平制表符,用于横向跳到下一制表符

\" --------双引号

\' ---------单引号

\\ ---------一个反斜杠

\f ---------换页

\0dd ---------八进制数,dd代表字符

\xhh ---------十六进制

3、字符串编码转换

最早的字符串编码是美国标准信息交换码,即ASSCII码。后面各国都需要编码,于是出现了GBK、GB2312、UTF-8编码等。GBK、GB2312是我国制定的中文编码标准,使用一个字节表示英文字母,两个字节表示中文字符。UTF-8是国际通用的编码,对全世界所有国家需要用到的字符都进行了编码,它采用一个字节表示英文字符,用3个字节表示中文。在python 3.x 中,默认采用UTF-8编码,这种编码避免了中文乱码问题的发生。

另外,在python 中有两种常用的字符串类型,如str、bytes。其中str表示Unicode 字符(ASSCII或者其他),bytes表示二进制数据。

注意:bytes 类型的数据是带有b前缀的字符串(使用单引号或者双引号表示)。如,b'\xd2\xb0'

和b'mr'都是bytes 类型的数据

1)使用encode()方法编码

使用encode()方法将str转化为二进制数据(bytes),这个过程也成为编码。

参考语法:str.encode([encoding="utf-8"][,errors="strict"])

说明: str------表示要进行转换的字符串

encoding="utf-8"-------可选参数,指定的转换时需要采用的编码

errors="strict"-------可选参数,用于指定错误处理方式,其可选strict(遇到非法字符就抛出异常),ignore(忽略非法字符),replace(用"?"替代非法字符)

注意:使用encode()方法时不会修改原字符串。

举个小栗子:

str3 = '''我是男生,喜欢

打篮球。

'''

byte1 = str3.encode('GBK')

byte2 = str3.encode('utf-8')

print("原字符串为:",str3)

print("转换后的字符串:",byte1)

print("转换后的字符串:",byte2)

采用两种不同的编码方法输出的结果不同。

打印结果:

2)使用decode()方法解码

使用decode()方法用于将二进制数据转换为字符串。也称之为解码。

使用语法: bytes.decode([encoding="utf-8"][,errors="strict"])

说明: bytes ------表示要进行转换的二进制数据

encoding="utf-8"-----------可选参数,指定的转换时需要采用的编码

errors="strict"-------可选参数,用于指定错误处理方式,其可选strict(遇到非法字符就抛出异常),ignore(忽略非法字符),replace(用"?"替代非法字符)

注意:在指定解码采用的字符编码时,需要采用与编码时采用的字符编码一致。

我们举个例子:

str3 = '''我是男生,喜欢

打篮球。

'''

byte1 = str3.encode('GBK')
byte2 = str3.encode('utf-8')

print("原字符串为:",str3)

print("转换后的字符串:",byte1)

print("转换后的字符串:",byte2)

#解码:

str_new1 = byte1.decode("GBK")
str_new2 = byte2.decode("GBK")

print(str_new1)

print(str_new2)

由于上面黄色标识的部分解码和编码的格式不一样就会报错。

需改好正常执行:

4、字符串拼接

这个比较简单,直接使用+即可完成。

举个小栗子:

str1 = "我爱祖国!"

str2 = 'I am Dewi,'

str3 = '''我是男生,喜欢

打篮球。

'''

print(str1+ str2 +str3)

输出如下:

5、计算字符串的长度

由于不同的字符占字节数不同,因此要计算字符串的长度,需要先了解各个字符所占的字节数。一般数字、英文、小数点、下划线和空格占一个字节;一个汉字可能会占用2-4个字节,取决于采用的编码。

汉字在GBK/GB2312 占2个字节

汉字在UTF-8/Unicode 占3个或者4个字节

举例说明:

str1 = "我爱祖国!"

str2 = 'I am Dewi,'

str_add = str2 + str1

print(len(str_add)) #默认时计算,所有英文、数字、汉字、空格都是一个字符(占一个字节)

print(len(str_add.encode("utf-8")))#指定utf-8,汉字占3个字节,其它占一个字节,4*3+11

print(len(str_add.encode("GBK")))#指定GBK,汉字占2个字节,其它占一个字节,4*2+11

输出结果参考:

今天先写到这里了,每天进步一点点。今天也要加油啊!

相关推荐
q5673152320 分钟前
在 Bash 中获取 Python 模块变量列
开发语言·python·bash
是萝卜干呀21 分钟前
Backend - Python 爬取网页数据并保存在Excel文件中
python·excel·table·xlwt·爬取网页数据
代码欢乐豆22 分钟前
数据采集之selenium模拟登录
python·selenium·测试工具
许野平1 小时前
Rust: 利用 chrono 库实现日期和字符串互相转换
开发语言·后端·rust·字符串·转换·日期·chrono
也无晴也无风雨1 小时前
在JS中, 0 == [0] 吗
开发语言·javascript
狂奔solar1 小时前
yelp数据集上识别潜在的热门商家
开发语言·python
Tassel_YUE1 小时前
网络自动化04:python实现ACL匹配信息(主机与主机信息)
网络·python·自动化
聪明的墨菲特i1 小时前
Python爬虫学习
爬虫·python·学习
blammmp2 小时前
Java:数据结构-枚举
java·开发语言·数据结构
何曾参静谧2 小时前
「C/C++」C/C++ 指针篇 之 指针运算
c语言·开发语言·c++