python学习笔记(二)、字符串操作
该一系列python学习笔记都是根据《Python基础教程(第3版)》内容所记录整理的
1.字符串基本操作
所有标准序列操作(索引、切片、乘法、成员资格检查、长度、最小值和最大值)都适用于字符串,但字符串是不可变的,所有元素赋值、切片赋值等操作都是非法的。
2.设置字符串的格式
这里设置字符串格式的基本思想是对字符串调用方法format,并提供要设置其格式的值。每个值都被插入字符串中,以替换用花括号 {} 括起的替换字段。要在最终结果中包含花括号,可以在格式字符串中使用两个花括号(即{{...}})来指定,如f"{{a:math.e.2f}}".format(a=math.pi)
在格式字符串中,最重要的是替换字段。替换字段由如下部分组成,其中每个部分都是可选的。
- 字段名:索引或标识符,指出要设置哪个值的格式并使用结果来替换该字段,其中每个部分都是可选的。如:'{2} {psd} {0} {name} {1}'.format('a','b','c','d',name='ee',psd='ff'),结果为: c ff a ee b
- 转换标志:跟在叹号后面的单个字符。当前支持的字符包括r(表示repr)、s(表示str)和a(表示ASCII)。如:print('{pi!s} {pi!r} {pi!a}'.format(pi = 'π')) 结果为:π 'π' '\u3c0'
- 格式说明符:跟在冒号后面的表达式。格式说明符能够让我们够详细的指定最终的格式,包括格式类型(如字符串、浮点数或十六进制等),字段宽度和数的精度,如何显示符号和千位分隔符,以及各种对齐和填充方式。
3.转换说明符
format = 'Hello, %s. %s enough for ya'
values = ('word','Hot')
print(format % values) ——> Hell0, word. Hot enough for ya
上述格式字符串中的 %s 称为转换说明符,指出了要将值插入什么地方。s意味着将值视为字符串进行格式设置。
4.替换字段名
str1 = '{foo} {1} {bar} {0}'
print(str1.format(1,2,bar=4,foo=3)) ——> 3 1 4 2
5.基本转换
指定要在字段中包含的值后,就可添加有关如何设置其格式的指令了。首先,可以提供一个转换标志
print('{pi!s} {pi!r} {pi!a}'.format(pi = 'π')) ——> π 'π' '\u3c0'
你还可以指定要转换的值将其视为那种类型。
print('The float is {num:f}'.format(num=42)) ——> 42.000000 (默认保留后六位小数)
类型 含义
b 将整数表示为二进制
c 将整数解读为Unicode码点
d 将整数视为十进制数进行处理,这是整数默认使用的说明符
e 使用科学表示法来表示小数(用e来表示指数)
E 与e 相同,但使用E来表示指数
f 将小数表示为定点数
F 与f 相同,但对于特殊值(nan和inf),使用大写表示
g 自动在定点表示法和科学表示法之间做出选择。这是默认用于小数的说明符,但在默认情况下至少有1位小数
G 与g 相同,但用大写来表示指数和特殊值
n 与g 相同,但插入随区域而异的数字分隔符
o 将整数表示为八进制
s 保存字符串的格式不变,这是默认用于字符串的说明符
x 将整数表示为十六进制数并使用小写字母
X 与x 相同,但使用大写字母
% 将数表示为百分比值(乘以100,按说明符 f 设置格式,再在后面加上%)
6.宽度、精度和千位分隔符
宽度是使用整数指定的,如下所示:
print('{num:10}'.format(num=3)) ——> ' 3'
print('{num:10}'format(num='3')) ——> '3 '
如你所见,数对齐方式是向右对齐,字符串是向左对齐。
精度也是使用整数指定的,如下所示:
print('pi = {num:.2f}'.format(num=math.pi)) ——> pi = 3.14
最后,可以使用逗号来指出你要添加的 千位分隔符
print('{num:,}'.format(num=1000*1000)) ——> 1,000,000
三种模式可以嵌套使用,但表示千位分隔符的 ,号要放在宽度和精度之间,如:str1={pi:10,2f}
7.符号、对齐和用0填充
在指定宽度和精度的数前面,可以添加一个标志。这个标志可以是零、加好、减号或空格,其中零表示使用0来填充数字,如:'{:010.2f}'.format(math.pi) '0000003.14'
指定对齐方式:左对齐( < )、右对齐( > )、居中( ^ )。
还有更具体的说明符 = ,它指定将填充字符放在符号(-/+)和数字之间。如:'{:=10.2f}'.format(-math.pi)) ——> '- 3.14'
最后要了解的是 井号( # ),将其放在符号说明符( : )和宽度之间(如果指定了这两种设置)。这个选项将触发另一种转换方式,转换细节随类型而异。例如,对于二进制、八进制和十六进制转换,将加上对于前缀符号。
8.字符串方法
这里只介绍比较常用的一些方法,如果想详细了解,请查验API。
8.1 center
方法center通过再两边添加填充字符(默认为空格)让字符串居中。center(40,'*')
8.2 find
方法find在字符串中查找子串。如果找到就返回第一个字符的索引,否则返回 -1。该方法还可以指定起点和终点,如:str.find('a',1)、str.find('a',0,30)。值得注意的是,该指定范围只包含起点,不包含终点。
8.3 join
方法join用于合并序列的元素,与split相反。如:''.join([.....])、'+'.join((......))。并且所有合并序列的元素都必须是字符串,且合并的时候会自动省略掉相同的元素。
print('+'.join({'a','b','a','c'})) ——> a+c+b(合并顺序随机)
8.4 lower
方法lower返回字符串的小写。
8.5 upper
方法upper返回字符串的大写。
8.6 title
方法title返回字符串的首字符大写。
8.7 replace
方法replace将指定子串都替换为另一个字符串,并返回替换后的结果。如:str.replace('x','aa')
8.8 split
方法split用于将字符串拆分为序列。如:str.split('+')、str.split()
8.9 strip
方法strip用于去掉字符串的开头和结尾的空格。
你还可以在一个字符串参数中指定要删除那些字符。如:'***AA*AA!!!**'.strip('*!') ——> AA*AA
8.10 translate
方法translate与replace一样替换字符串的特定部分,但不同的是它只能进行单字符串替换。这个方法的优势在于能够同时替换多个字符,因此效率上比replace高。
然而,在使用translate前必须创建一个转换表。这个转换表指出了不同Unicode码点之间的转换关系。要创建转换表,可对字符串类型str调用方法maketrans,这个方法接收两个参数:两个长度相同的字符串,表示将第一个字符串中的每个字符都替换为第二个字符串中对应的字符。
table = str.maketrans('cs','kz')
str1.translate(table)
9 判断字符串是否满足特定的条件
很多字符串方法都以 is 打头,如isspace、isdigit、isuppe,它们判断字符串是否具有特定的性质(如包含的字符全为空白、数字或大写)。如果条件满足,则返回True,否则返回False。
isalnum、isalpha、isdecimal、isdigit、isidentifier、islower、isnumeric、isprinttable、isspace、istitle、isupper..............
python学习笔记(二)、字符串操作的更多相关文章
- python学习笔记(字符串操作、字典操作、三级菜单实例)
字符串操作 name = "alex" print(name.capitalize()) #首字母大写 name = "my name is alex" pri ...
- 【Python学习笔记】字符串操作
字符串的表示 python中的字符串是一个常量,可以使用单引号'',双引号""或三引号""" """来创建一个字符串常量 ...
- python学习笔记(二)-字符串方法
python的字符串内建函数: #====================常用方法=============================name = 'besttest' new_name = n ...
- Python 学习笔记二
笔记二 :print 以及基本文件操作 笔记一已取消置顶链接地址 http://www.cnblogs.com/dzzy/p/5140899.html 暑假只是快速过了一遍python ,现在起开始仔 ...
- Python学习笔记(二)
标识符和关键字 1,邮箱的Python标识符是任意长度的非空字符序列(引导字符+后续字符.) python标识符必须符合两条规则--标识符区分大小写 (1)只要是unicode编码字母都可以充当引导字 ...
- python学习笔记(二):python数据类型
上一篇博客写了python的入门和简单流程控制,这次写python的数据类型和各种数据类型的内置方法.一.数据类型是什么鬼?计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各 ...
- 从零开始的Python学习Episode 6——字符串操作
字符串操作 一.输出重复字符串 print('smile'*6) #输出6个smile 二.通过引索输出部分字符串 print('smile'[1:]) print('smile'[1:3]) #输出 ...
- Python学习杂记_3_字符串操作的常用方法
字符串操作 字符串是可以通过下标来进行取值的,但是由于字符串是不可变变量,不能通过下标来修改它的值(形式如 字符串[下标]),下标从0开始,最大下标值是字符串长度减1,即len(string)-1 P ...
- (10.1)Python学习笔记二
1.在项目工程中要模块化测试一个开发的功能,在测试通过后交付给项目组其他人员继续开发.要保证代码开发的性能和效率以及可扩展性. 2.项目工程中的文件夹分类要功能模块明确清晰,在python中引入某一个 ...
随机推荐
- jQuery-弹幕
该方法可能有bug,毕竟简单粗暴 <!DOCTYPE html><html> <head> <meta charset="UTF-8"&g ...
- 「HNOI2016」数据结构大毒瘤
真是 \(6\) 道数据结构毒瘤... 开始口胡各种做法... 「HNOI2016」网络 整体二分+树状数组. 开始想了一个大常数 \(O(n\log^2 n)\) 做法,然后就被卡掉了... 发现直 ...
- 全面了解移动端DNS域名劫持等杂症:原理、根源、HttpDNS解决方案等
1.引言 对于互联网,域名是访问的第一跳,而这一跳很多时候会“失足”(尤其是移动端网络),导致访问错误内容.失败连接等,让用户在互联网上畅游的爽快瞬间消失. 而对于这关键的第一跳,包括鹅厂在内的国 ...
- C 线性表的链式存储实现及插入、删除等操作示例
一.链式存储的优势 线性表的存储可以通过顺序存储或链式存储实现,其中顺序存储基于数组实现(见本人上一篇博客),在进行插入删除等操作时,需对表内某一部分元素逐个移动,效率较低.而链式结构不依赖于地址连续 ...
- display: table-cell的实用应用
概述 之前工作中碰到了一个垂直居中问题,最后通过查资料利用table-cell解决.于是打算总结一下有关table-cell的应用,记录下来,供以后开发时参考,相信对其他人也有用. 参考资料:我所知道 ...
- linux目录跳转快捷方式——z武器
z是一个shell脚本,可以帮你快速的切换目录.至于是什么原理我还没有深究,有兴趣的东西可以看下. z的源码在这里:https://github.com/rupa/z/blob/master/z.sh ...
- 激活IDEA方法
1.需要一个jar包,在 http://idea.lanyus.com/ 下载 2.将jar拷贝到idea安装目录 3.复制jar包路径 到如下图两个文件中 例:-javaagent:C:\Ap ...
- C++版-剑指offer 面试题6:重建二叉树(Leetcode105. Construct Binary Tree from Preorder and Inorder Traversal) 解题报告
剑指offer 重建二叉树 提交网址: http://www.nowcoder.com/practice/8a19cbe657394eeaac2f6ea9b0f6fcf6?tpId=13&tq ...
- Flink集群部署
部署方式 一般来讲有三种方式: Local Standalone Flink On Yarn/Mesos/K8s… 单机模式 参考上一篇Flink从入门到放弃(入门篇2)-本地环境搭建&构建第 ...
- CentOS安装使用.netcore极简教程(免费提供学习服务器)
本文目标是指引从未使用过Linux的.Neter,如何在CentOS7上安装.Net Core环境,以及部署.Net Core应用. 仅针对CentOS,其它Linux系统类似,命令环节稍加调整: 需 ...