python学习手册笔记——07.字符串
00.Python字符串:一个有序的字符串的集合,用来存储和表现给予文本的信息。
01.常见字符串常量和表达式
s=' ' 空字符串
s="spam's" 双引号和单引号相同
S=‘s\n\ta\x00m’ 转移序列
s=""""" 三重引号字符串块
s=r'\temp\spam' Raw字符串
s=b'spam'
s=u'spam'
s1+s2 合并
s * 3 重复
s[i] 索引、分片、求长度
s[i:j]
len(s)
"a %s parror" %kind 字符串格式化表达式
"a{0} parrot".format(kind) 字符串格式化方法
s.find('pa') 字符串方法调用:搜索
s.rstrip() 移除空格
s.replace('pa', 'xx') 替换
s.split(',') 用占位符分隔
s.isdigit() 内容测试
s.lower() 小写转换
s.endswith('spam') 结束测试
s.encode('latin-1') Unicode编码等
for x in S: print(x) 迭代,成员关系
'spam' in S
[c * 2 for c in S]
map(ord, S)
02.零(空)字符串不会像C语言那样去结束一个字符串。相反,pyhont在内存保持了一个整个字符串的长度和文本。事实上,Python没有字符会结束一个字符串。这里有一个完全绝对的二进制转义字符编码的字符编码的字符串
03.path = r'C:\new\text.data'
r:代表raw,代表正则表达式
04.三重引号编写多行字符串,当它出现在文件的特定地点时,被当作注释一样的字符串常量.这并非只能使用三重引号的文本块,但是它往往是可以用作多行注释的。
05.myjob = "hacker"
06.
07.具有数学思想的读者有时会实现这里有些不对称:最左侧的元素的偏移为0,而最右侧的元素的偏移为1.唉,在python中是没有所谓-0这样的偏移啊。
08.
09. S[i:j:k]--i:偏移, j:偏移范围,k:步进
10.为了去掉换行字符常常土建采用line.rstrip方法,因为这个调用会留下没有换行字符那行的最后一个字符,二这在一些文本编辑器工具中很常用的。
int():将字符串转换为数字表达式形式
str():将数字转换为字符串表达式形式
repr():也能够将一个对象转换为其字符串形式,然而这些返回的对象将作为代码的字符串,可以重新创建对象。对于字符串来说,如果是使用print语句进行显示的话,其结果需要引号括起来。
11.它将会运行一个包含了Python表达式代码的字符串,并能够将一个字符串转换为任意类型的对象。
12.字符串还提供了一系列的方法去实现更复杂的文本处理任务。方法就是与特定的对象相关联在一起的函数。从技术的角度来讲,他们复数与对象的属性,二这些属性拗不过是写可调用函数罢了。
函数也就是代码包,方法调用同事进行两次操作(一次获取属性和一次函数调用)。
属性读取:具有object.attribute格式的表达式可以理解为“读取object对象的属性attribute的值”。
函数调用表达式:具有函数(参数)格式的表达式意味着"调用函数代码,传递零更多都好隔开的参数对象,最后返回函数的返回值"。
13.我们知道字符串是不可变的,所以不能再原处直接对齐进行修改。
14.字符串的splite方法将一个字符串分割为一个子字符串的列表,已分隔符字符串为标准。
15.标准库模块:名为string,其中包含的函数大约相当于目前字符串对象方法集。
16.字符串格式化表达式
17.格式化字符串:
a.在%操作符的左侧放置一个需要进行格式化的字符串,这个字符串带有一个或多个嵌入的转换目标,都以%开头。
b.在%操作符右侧放置一个对象,这些对象将插入到左侧想让Python进行格式化字符串的一个转换目标的位置上去。
18.注意到所有目标左侧都是%s,这就表示要把他们转换为字符串。由于对象的每个类型都可以转换为字符串,每一个与%s一同参与操作的对象类型都可以转换代码。
19.字符串格式化代码
s 字符串(或任何对象)
r s,但使用repr,而不是str
c 字符
d 十进制(整数)
i 整数
u 无号(整数)
o 八进制整数
x 十六进制整数
X x,但打印大写
e 浮点指数
E e,但打印大写
f 浮点十进制
F 浮点十进制
g 浮点e或f
G 浮点E或F
% 常量%
20.转换目标的通过结构看上去是这样的:
%[(name)][flags][width][.preicsion]typecode
21.基于字典的字符串格式化同时也允许左边的额转换目标来引用右边字典中的键来提取对应的值。
22.
23.它和格式化表达式有很大程度的重合,并且有时比格式化表达式需要更多的代码,且在高级用途的时候很复杂。正因如此,目前在表达式和方法调用之间没有最佳使用建议,所以大多数程序猿只需对这两种方案有基本的理解
24.本质上,字符串也可以是创建一个临时字符串的常量,并且任意的对象类型都可以替换:
25.格式化字符串中的方括号可以指定列表(及其他的序列)偏移量以执行索引,但是,只有单个的正偏移才能在格式化字符串的语法中有效。
26.添加具体格式化:另一种%表达式类似的是,可以在格式化字符串中添加额外的语法来实现更具体的层级。
27.{fieldname|conversionflag: formatspec}
fieldname是指定参数的一个数字或关键字,后面跟着可选的"name"或"[index]"成分引用
conversionflag可以是r,s,或者a分别是在该值上对repr、str或ascii内置函数的依次调用。
Formatspec指定了如何表示该值,包括字段宽度、对齐方式、补零、小数点精度等细节,并且以一个可选的数据类型编码结束。
28.冒号后的formatspec组成形式上的描述如下:
[fill]align[sign][#][0][width][.precision][typecode]
align可能是<、>、=或^,分别表示左对齐、右对齐,一个标记字符后的补充或居中对齐。只带有{}的格式化字符串,它从参数列表动态地获取值(和格式化表达式中的*很相似)。
29.字符串格式化是把整数格式化为指定的进制的某些内置函数的替代方法:
30.为什么用新的格式化方法:
*拥有%表达式所没有的一些额外功能、
*可以到操作符会有一个更容易记忆的方法名
*不支持用于单个和多个替代值大小写的不同语法
31.Python中有三个主要类型(一级操作)的分类:
数字:(整数、浮点数、二进制,分数等)
序列:字符串列表、元组
映射:字典
32.一般来说,不可变类型有某种完整性,保证这个对象不会被程序的其他部分改变。对于新人来说如果不知道这个有什么要紧的话。