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

输出结果参考:

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

相关推荐
waterHBO38 分钟前
python 爬虫 selenium 笔记
爬虫·python·selenium
编程零零七2 小时前
Python数据分析工具(三):pymssql的用法
开发语言·前端·数据库·python·oracle·数据分析·pymssql
2401_858286113 小时前
52.【C语言】 字符函数和字符串函数(strcat函数)
c语言·开发语言
铁松溜达py3 小时前
编译器/工具链环境:GCC vs LLVM/Clang,MSVCRT vs UCRT
开发语言·网络
everyStudy3 小时前
JavaScript如何判断输入的是空格
开发语言·javascript·ecmascript
AIAdvocate4 小时前
Pandas_数据结构详解
数据结构·python·pandas
小言从不摸鱼4 小时前
【AI大模型】ChatGPT模型原理介绍(下)
人工智能·python·深度学习·机器学习·自然语言处理·chatgpt
C-SDN花园GGbond4 小时前
【探索数据结构与算法】插入排序:原理、实现与分析(图文详解)
c语言·开发语言·数据结构·排序算法
迷迭所归处5 小时前
C++ —— 关于vector
开发语言·c++·算法
架构文摘JGWZ6 小时前
Java 23 的12 个新特性!!
java·开发语言·学习