python-第三节-字符串
字符串基本特点
在实际工作中,我们最常和字符串打交道,逻辑思维重要性远大于数学能力
字符串的本质是:字符序列。python的字符串是不可变的,我们无法对原字符串做任何修改,但是可以将字符串的一部分复制到新创建的字符串。达到看起来修改的结果
字符串的编码
python3直接支持unicode,可以表示世界上任何书面语言的字符。python3的字符默认就是16位Unicode编码,ASCII码是Unicode的子集。
使用内置函数 ord() 将字符转换为对应的数字,使用chr()函数将数字转换为对应的字符
引号创建字符串
我们可以通过单引号或双引号创建字符串。例如:a=‘abc’,b=‘sxt’,使用两种引号的好处就是可以创建本身就包含引号的字符串,而不用使用转义字符。例如:
连续三个单引号或者三个双引号,可以帮助我们创建多行字符串。例如
空字符串和len()函数
python允许空字符串的存在,不包含任何字符且长度为0.例如:
转义字符
我们可以使用“+特殊字符”,实现某些难以用字符表示的效果。比如:换行等。常见的转义字符有这些:
测试转义字符
字符串拼接
1、可以使用+将多个字符串拼接起来。例如:‘aa’+‘bb’>‘aabb’
(1) 如果+两边都是字符串,则拼接
(2) 如果+号两边都是数字,则加法运算
(3) 如果+两边类型不同,则会抛出异常
2、可以将多个字面字符串直接放到一起实现拼接。例如:‘aa’‘bb’‘aabb’
字符串赋值
使用乘法可以实现字符串赋值
不换行打印,end=‘’
从控制台读取字符串
input()函数
str()实现数字转型字符串
str函数可以帮助我们将其他数据类型转换为字符串。例如:
当我们调用print()函数时,解释器自动调用了str()将非字符串的对象转成可字符串。我们在面向对象章节讲解这部分内容
使用[]提取字符
字符串的本质就是字符序列,我们可以通过在字符串后面添加[],在【】里面指定偏移量,可以提取该位置的单个字符。
正向搜索:
最左侧第一个字符,偏移量是0,第二个偏移量是1,以此类推。直到len(str)-1为止
反向搜索:
最右侧第一个字符,偏移量是-1,倒数第二个偏移量是-2,以此类推,直到-len(str)
replace()实现字符串替换
整个过程,实际上我们是创建了新的字符串对象,并指向了变量a,而不是修改了以前的字符串。内存图如下:
字符串切片slice操作
切片slice操作可以让我们快速的提取子字符串。标准格式为:
【起始偏移量:终止偏移量:步长step】
典型操作
其他操作
切片操作时,起始偏移量和终止偏移量不再【0,字符串长度-1】这个范围,也不会报错。起始偏移量小于0则会当做0,终止偏移量大于“长度-1”会被当成-1。例如:
实操:
1、将‘to be or not to be’字母倒序输出
2、将"sxtsxtsxt"所有s输出
split()分割和join()合并
split()可以基于指定分隔符将字符串分隔成多个子字符串(存储到列表中).。如果不指定分隔符,则默认使用空白符(换行符、空格、制表符)。示例代码如下:
join的作用和split() 作用刚好相反,用于将一系列子字符串连接起来。示例代码如下:
拼接字符串要点:
使用字符串拼接符+,会生成新的字符串对象,因此不推荐使用+来拼接字符串。推荐使用join函数,因为join函数在拼接字符串之前会计算所有字符的长度,然后逐一拷贝,仅新建一次对象。
测试+和join拼接字符串的时间
字符串驻留机制和字符串比较
字符串驻留:仅保存一份相同且不可变字符串的方法,不同的值被存放在字符串驻留池中。python支持字符串驻留机制,对于符号标识符规则的字符串(仅包含下划线_、字母和数字)会启用字符串驻留机制(类似java常量池)
字符串比较同一性
我们可以直接使用==,!=对字符串进行比较,是否含有相同的字符。
我们使用is / not is,判断两个对象是否同一个对象。比较的是对象的地址,即id(obj1)是否和id(obj2)相等
成员操作符
in 或者not in 判断某个字符是否存在于字符串中
字符串常用方法汇总
测试文本:a=’’‘我是高淇,今年 18 岁了,我在北京尚学堂科技上班。我的儿子叫高洛希,他 6 岁了。我 是一个编程教育的普及者,希望影响 6000 万学习编程的中国人。我儿子现在也开始学习编 程,希望他 18 岁的时候可以超过我’’’
常用查找方法:
去除首尾信息
我们可以使用strip函数去除字符串首尾指定信息。通过lstrip去除字符串左边指定信息,通过rstrip去除字符串右边指定信息
示例:
大小写转换
编程中关于字符串大小写转换的情况,经常遇到。我们将相关方法汇总到这里。为了方便学习,先设定一个测试变量:
格式排版
center()、ljust()、rjust()这三个函数用于对字符串实现排版。示例如下:
其他方法
字符串的格式化
format()基本用法
python3新增了一种格式化字符串的函数,它增强了字符串格式化的功能。
基本语法是通过{}和:来代替以前的%
format函数可以接受不限个参数,位置可以不按顺序
示例:
填充与对齐
填充常常跟对齐一起使用,^、<、>分别是居中、左对齐、右对齐,后面带宽度
:号后面带填充的字符,只能是一个字符,不指定的话默认是用空格填充
数字格式化
浮点数通过f,整数通过d进行需要的格式化。案例如下:
可变字符串
在python中,字符串属于不可变对象,不支持原地修改,如果需要修改其中的值,智能创建新的字符串对象。但是,经常我们确实需要原地修改字符串,可以使用io.StringIO对象或array模块。
本章实操作业
作业
为什么PyCharm触发python驻留机制呢?