《Python基础教程》第三章–读书笔记
admin
2023-07-31 01:44:28
0

第三章:使用字符串

本章将会介绍如何使用字符串格式化其他的值(如打印特殊格式的字符串),并简单了解一下利用字符串的分割、连接、搜索等方法能做些什么。

基本字符串操作

所有标准的序列操作(索引、分片、乘法、判断成员资格、求长度、取最大最小值)对字符串同样适用。
记住:字符串是不可变的!

字符串格式化:精简版

字符串格式化使用字符串格式化操作符(这个名字还是很恰当地)即百分号%来实现。
注:%也可以用来作模运算(求余)操作符。

在%左侧放置一个字符串(格式化字符串),而右侧放置希望被格式化的值。可以使用一个值,也可以使用多个值的元祖或者字典。

>>>fromat = \"hello, %s.%s enough?\"
>>>values = (\'michael\',\'dut\')
>>>print format % values
hello, michael.dut enough?

格式化字符串的%s部分称为转换说明符。

如果要格式化实数(浮点数),可以用f说明转换说明符的类型。因为格式化转换说明符总是以表示类型的字符结束。同时提供所需要的进度:一个句点加上希望保留的小数位数。

>>>format = \"pi with three decimals: %.3f\"
>>>form math import pi
>>>print format % pi
pi with three decimals: 3.142

字符串格式化:完整版

格式化操作符的右操作数可以是任意类型,在此,先了解一下元祖。

如果右操作数是元祖的话,则其中的每一个元素都会被单独格式化,每个值都需要一个对应的转换说明符。
一个都不能少!

如果需要转换的元祖作为转换表达式的一部分存在,元祖必须用圆括号括起来,否则会出错!

基本的转换说明符包括以下部分。注意,这些项的顺序是至关重要的!

  1. %字符:标记转换说明符的开始

  2. 转换标志(可选):-表示左对齐,+表示在转换值之前要加上正负号;“”(空白字符)表示正数之前保留空格;0表示转换值至若位数不够则用0填充。

  3. 最小字段宽度(可选):转换后的字符串至少应该具有该值指定的宽度。如果是*,则宽度会从值元祖中读出。

  4. 点(.)后跟精度值(可选):如果转换的是实数,精度值表示保留几位小数。如果转换的是字符串,那么该数字就表示最大字段宽度。如果是*,那么进度将会从元祖中读出。

  5. 转换类型:查看表
    字符串格式转换类型

格式 描述
%c 字符及其ASCII码
%s 字符串(使用str转换任意Python对象)
%r 字符串(使用repr转换任意Python对象)
%d(%i) 有符号整数(十进制)
%u 无符号整数(十进制)
%o 无符号整数(八进制)
%x 无符号整数(十六进制)
%X 无符号整数(十六进制大写字符)
%e 浮点数字(科学计数法)
%E 浮点数字(科学计数法,用E代替e)
%f(%F) 浮点数字(用小数点符号)
%g 浮点数字(根据值的大小采用%e或%f)
%G 浮点数字(类似于%g)
%p 指针(用十六进制打印值的内存地址)
%n 存储输出字符的数量放进参数列表的下一个变量中

简单的转换

>>>\'using str:%s\'% 42L
\'using str: 42\'
>>>\'using repr:%r\'% 42L
\'using repr: 42L\'

字段宽度和精度

这两个参数都是整数(首先是字段宽度,然后是精度),通过点好(.)分隔。虽然两个都是可选的参数,但是如果只给出精度,就必须包含点好:

>>>\'%10.2f\'%pi
\'      3.14\' #6个空格

可以使用*(星号)作为字段宽度或者精度(或者两者都用),此时数值会从元祖参数中读出:

>>>\'%.*s\'%(5,\'michael xiang\')
\'micha\'

符号、对齐和用0填充

在字段宽度和精度之前还可以放置一个“标志”,该标志可以是:

  • 0 0表示将会用0填充

  • + 加号表示,不管是正数还是负数,都要标识出正负号

  • - 减号表示用来左对齐数值

  • 空格 空格:表示正数前加上空格,这对需要对齐正负数时会很有用
    0表示将会用0填充

>>>\'%010.2f\'%pi    #0填充,并不表示八进制,字段宽度10,精度2
\'0000003.14\'
>>>\'%-10.2f\'*%pi
\'3.14      \'    #看到没,右侧多了空格,数值左对齐了
>>>print (\'% 5d\' % 10) + \'\\n\' + (\'% 5d\' % -10)
   10
  -10
>>>print (\'%+5d\' % 10) + \'\\n\' + (\'s%+5d\' % -10)
  +10
  -10

字符串方法

字符串的方法比列表方法还要丰富的多,因为字符串从string模块中“继承”了很多方法。因为字符串的方法太多,这里只介绍一些特别有用的方法。
附上:官方模块参考文档——Python Module Index

find

find方法可以在一个较长的字符串中查找子串,返回子串所在位置的最左端索引。如果没有找到,返回-1。

>>>\'hello michael, i am michael\'.find(\'michael\')
6    #可见,空格也包含在内了

这个方法还可以接收可选的起始点和结束点参数:

>>>\'hello michael,your name is michael\'.find(\'michael\',7,27)
-1

注:不包含第二个索引,这在python中是惯例

join

join方法是非常重要的字符串方法,它是split方法的逆方法,用来连接序列中的元素:

>>>seq=[1,2,3,4,5]
>>>sep=\'+\'
>>>sep.join(seq)    #连接数字列表,不是字符串,你看下面就出错啦!
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
 in ()
      1 seq=[1,2,3,4,5]
      2 sep=\'+\'
----> 3 sep.join(seq)
 
TypeError: sequence item 0: expected string, int found

>>>seq=[\'1\',\'2\',\'3\',\'4\']
>>>sep.join(seq)    #连接字符串列表
‘1+2+3+4’

需要被连接的序列元素都必须是字符串。

lower

lower方法返回字符串的小写字母版
lower方法相关的是title方法,它会将字符串转换为标题——也就是所有档次的首字母大写,其他小写。但是它使用的单词划分方法可能会得到并不自然的结果。

replace

replace方法返回某字符串的所有匹配项均被替换之后得到字符串。

>>>\'michael hello michael\'.replace(\'mi\',\'hh\')
\'hhchael hello hhchael\'

有点类似word里的“查找替换”功能吧!是不是很有用啊!

split

这是一个非常重要的字符串方法,它是join方法的逆方法,用来将字符串分隔成序列:

>>>\'1+2+3+4\'.split(\'+\')
[\'1\',\'2\',\'3\',\'4\']
>>>\'using the default\'.split()
[\'using\',\'the\',\'default\']

注意:如果不提供任何分隔符,程序将会把所有空格作为分隔符(空格、制表、换行等)。

strip

strip方法返回去除两侧(不包括内部)空格的字符串:

>>>\'     internal whitespace is kept    \'.strip()
\'internal whitespace is kept\'

translate

translate方法和replace方法一样,可以替换字符串中的某些部分,但是和前者不同的是,translate方法只处理单个字符。它的优势在于可以同时进行多个替换,有些时候比repalce效率搞得多!
在使用translate转换之前,需要先完成一张转换表。使用string模块里面的maketrans函数就行。

>>>from string import maketrans
>>>table = maketrans(\'cs\',\'kz\')    #c->k,s->z,创建这个表之后,可以将它用做`translate`方法的参数
>>>\'this is an incredible test\'.translate(table)
\'thiz iz an inkredible tezt\'
>>>\'this is an incredible test\'.translate(table,\' \')    #`translate`的第二个参数是可选的,这个参数是用来指定需要删除的字符。
\'thizizaninkredibletezt\'

可见,translatemaketrans方法一起更配噢~

本章小结

这章内容相对比较少,字符串的方法确实很多,到时候,可以去查找,没必要记那么多,常见的弄熟悉就差不多了吧。

其实,这章最大的收获应该是字符串格式化时的一个例子:

>>>\'%10f\'%pi  #输出结果是\'  3.141593\'这里没有得到结果\'3.14159265\'让我产生了疑惑。

后来各处查询资料,才知道,默认小数保留位数为6。因此,才是得到那样的结果。
format可以翻译为格式化吧。

自己学会查找资料真的很重要!官方文档其实写的很棒的!不要惧怕英文!

  • 官方模块参考文档——Python Module Index

  • Python 入门指南

相关内容

热门资讯

Mobi、epub格式电子书如... 在wps里全局设置里有一个文件关联,打开,勾选电子书文件选项就可以了。
定时清理删除C:\Progra... C:\Program Files (x86)下面很多scoped_dir开头的文件夹 写个批处理 定...
scoped_dir32_70... 一台虚拟机C盘总是莫名奇妙的空间用完,导致很多软件没法再运行。经过仔细检查发现是C:\Program...
500 行 Python 代码... 语法分析器描述了一个句子的语法结构,用来帮助其他的应用进行推理。自然语言引入了很多意外的歧义,以我们...
小程序支付时提示:appid和... [Q]小程序支付时提示:appid和mch_id不匹配 [A]小程序和微信支付没有进行关联,访问“小...
pycparser 是一个用... `pycparser` 是一个用 Python 编写的 C 语言解析器。它可以用来解析 C 代码并构...
微信小程序使用slider实现... 众所周知哈,微信小程序里面的音频播放是没有进度条的,但最近有个项目呢,客户要求音频要有进度条控制,所...
65536是2的几次方 计算2... 65536是2的16次方:65536=2⁶ 65536是256的2次方:65536=256 6553...
Apache Doris 2.... 亲爱的社区小伙伴们,我们很高兴地向大家宣布,Apache Doris 2.0.0 版本已于...
项目管理和工程管理的区别 项目管理 项目管理,顾名思义就是专注于开发和完成项目的管理,以实现目标并满足成功标准和项目要求。 工...