Unicode简介
在Python3.x中,有三种字符串类型:str用于Unicode文本(包括ASCII),bytes用于二进制(包括已编码的文本),而bytearray是bytes的一个修改的变体。文本在两种模式下工作:文本,他讲内容表示为str类型并实现Unicode编码;二进制,它以原始bytes的形式处理,且不做任何数据转换。
Unicode具体内容于之后详解
字符串基础
字符串字面量
单引号与双引号
在Python字符串周围,单引号可以和双引号
互换
。两种形式同样有效,且返回相同类型的对象。
转移序列
反斜杠 \用来引用特殊的字符编码,称为转义序列。转义序列让我们能够在字符串嵌入不容易通过键盘输入的字符。
原始字符阻止转义
当字母 R或r 出现在字符串第一引号的前面,它将会关闭转义机制,结果是Python会将反斜杠作为字面量来保存。
双反斜杠阻止转义
实际上双反斜杠是一个反斜杠的转义序列,所以可以直接编写两个反斜杠来保留反斜杠来阻止转义。
三引用字符串
Python可以使用单引号或者双引号,这种形式以三个引号开始,并紧跟任意行数的文本,并且以与开头相同的三个引号结尾。Python会把在三引号内的
所有文本
收集到一个单独的
多行字符串
中,并在代码转折处嵌入换行字符(\n),输出什么就得到什么。要查看字符串,打印它。
注意
—三引用字符串会保留所有保留的文本,包括你认为是注释的文本。
字符串的操作
运算符号
-‘+’运算符可以用于拼接两个字符串, * 运算符可以重复字符串
[ ]运算符通过索引获取字符串中字符
[ : ]运算符截取字符串中的一部分,遵循左闭右开原则,str[0,2] 是不包含第 3 个字符的
in 成员运算符 - 如果字符串中包含给定的字符返回 True
not in 成员运算符 - 如果字符串中不包含给定的字符返回 True
r/R 原始字符串,所有的字符串都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符。 原始字符串除在字符串的第一个引号前加上字母 r(可以大小写)以外,与普通字符串有着几乎完全相同的语法。
%格式字符串
索引和分片
字符串被定义为 字符的有序集合,所以能通过位置访问它们的元素。Python中字符是通过索引来获取的。
Python与C语言类似,偏移量从0开始,同时Python还支持负偏移量。
索引
(S[ i ])获取特定偏移量的元素:
1、第一个元素的偏移量为0
2、负偏移量意味着从结尾或右端反向进行计数。
3、S[ 0 ]获取第一个元素
4、S[ -2 ] 获取倒数第二个元素
分片
(S[ i:j ]提取序列的连续部分:
1、遵循左闭右开原则,上边界不包含在内
2、分片的下边界和上边界,在缺省时默认为0和序列的长度
3、S[1:3]获取从偏移量为1直到但是不包括偏移量为3之间的所有元素
4、S[1: ]获取从偏移量为1直到末尾(序列长度)之间的所有元素
5、S[ :3]获取从偏移量为0直到但是不包括偏移量为3之间的所以元素
6、S[ :-1]获取从偏移量为0直到但是不包括最后一个元素之间的所有元素
7、S[ : ]获取从偏移量为0直到末尾之间的所有元素——实现了对S的顶层复制
8、允许跳过元素和反转顺序
拓展分片-第三个可选索引值
步长
(步幅)
1、X[ i:j:k],它表示:“提取对象中的所有元素,从偏移量 i 直到但是不包括偏移量 j ,每隔k个元素索引一次”
2、第三个限制 k ,默认值为+1。若明确指定一个值,那就能使用第三个限制去跳过某些元素或反转它们的顺序。
3、使用负数步长,前两个边界的意义实际进行反转。即反转或跳跃索引。
转换工具
Python中字符串不能相加字符串和数字
int/float函数
:将字符串转为数字
str函数
:将数字转为字符串表示
字符串代码转换
ord函数
:返回用来表示内存中相应字符的实际二进制值(底层整数码-ASCII字节值)
chr函数
:获取整数码并将其转换为对应的字符
修改字符串 I
字符串在Python中为不可变序列
修改方法
:拼接、分片。
字符串方法
字符串提供一系列实现更复杂的文本处理任务的方法
方法调用语法
属性获取
:具有
object.attribute
形式的表达式理解为“获取对象(object)中(attribute)属性的值”
调用表达式
:具有**function(arguments)**形式的表达式可以理解为“调用函数(function)的代码”,向其传递零个或多个逗号分隔的参数arguments对象,并且返回函数function的结果值。”
方法调用表达式
:object.method(arguments):从左到右进行求值——Python首先读取对象(object)的方法(method),然后调用它,传递进对象(object)的参数(arguments)。简单来说即为:
使用参数调用方法来处理对象。
修改字符串 II(字符串方法示例)
replace方法
:替换一个子字符串
object(字符串).replace(arguments)
参数是由最初子串(任意长度)和替换最初子串的字符串(任意长度)。之后进行全局搜索并替换。
>>> x = 'aa$bb$cc$dd'.replace('$','SPAM')
>>> x = 'aaSPAMbbSPAMccSPAMdd'
find方法
:返回搜索子串出现的偏移量
object(字符串).find(arguments)
参数是搜索的固定长度的子字符串,之后返回字符串出现处的偏移量【默认从前往后开始搜索 或者 未找到时返回 -1】
>>> S = 'xxxxSPAMxxxxSPAMxxxx'
>>> where = S.find('SPAM')
>>> where
>>> 4
>>> S = S[:where]+'EGGS'+S[(where+4):]
>>> S
>>> 'xxxxEGG5XXXXSPAMXXXX'
list函数
:将字符串转换成一个支持原位置修改的对象—列表,支持任意位置修改。
>>> S = 'spammy'
>>> L = list(s)
>>> L
['s','p','a','m','m','y']
>>>
>>> L[3] = 'x'
>>> L[4] = 'x'
>>> L
['s','p','a','x','x','y']
join方法
:将列表合并成一个字符串。
object(字符串).join(arguments
参数为要合并的列表。
>>> S = ''.join(L)
>>> S
'spaxxy'
解析文本
split方法
:字符串中的split方法,将一个字符串从分隔符处切成一系列子串并生成子串列表。
object(字符串).split(arguements)
参数
1、空白 即默认的分隔符为空白——这个字符串被一组或多个空格、制表符、换行符所分割,生成得到的子串列表。
2、使用具体的
字符串类型
分隔符填充
>>>line = 'aaa bbb ccc'
>>>cols = line.split()
>>>cols
['aaa','bbb','ccc']
>>>line = 'bbb,hacker,40'
>>>line.split(',')
['bbb','hacker','40']
>>>line = "i'mSPAMaSPAMlumberjack"
>>>line.split.("SPAM")
["i'm",'a','lumberjack']
字符串格式化表达式
格式化表达式基础
格式化字符串
1、在%运算符左侧放置一个需要进行格式化的字符串,这个字符串带有一个或多个内嵌的转换目标,都以%开头。
2、再运算符右侧放置一个(或多个,内嵌在元组中的对象),这些对象将会插入到你想让Python进行格式化的左侧的字符串,并替换一个(或多个)转换目标。
>>>'That is %d %s bird!'%(1,'dead')
That is 1 dead bird!
>>> exclamation = 'Ni'
>>>'The knights who says %s!'%exclamation
The knights who says Ni!
高级格式化表达式语法
表达式左侧转换目标的一般结构
%[(keyname)][flags][width][.precision]typecode(类型码)
1、为索引在表达式右侧使用的词典提供键的名称
2、罗列说明格式标签,如左对齐(-),数值符号(+)·······
3、为被替换的文本给出总的最小字段宽度
4、为浮点数字设置精度
字符串格式化同时也允许左边的转换目标引用右边编写的词典中的键来提取对应的值。
>>>'%(qty)d more %(food)s' %{'qty':1,'food':'spam'}
'1 more spam'
字符串格式化方法调用
字符串格式化方法基础