· 我们的目标是:通过这一套资料学习下来,通过熟练掌握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
输出结果参考:
今天先写到这里了,每天进步一点点。今天也要加油啊!