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中引入某一个 ...
随机推荐
- Android-Could not download kotlin-reflect.jar
在AndroidStudio中报以下错误: 错误详情: Could not download kotlin-reflect.jar (org.jetbrains.kotlin:kotlin-refle ...
- QEMU KVM Libvirt手册(5) – snapshots
前面讲了QEMU的qcow2格式的internal snapshot和external snapshot,这都是虚拟机文件格式的功能. 这是文件级别的. 还可以是文件系统级别的,比如很多文件系统支持s ...
- 【阿里聚安全·安全周刊】Intel芯片级安全漏洞事件|macOS存在漏洞
关键词:Intel漏洞丨mac OS漏洞丨三星漏洞丨安卓安全丨CPU漏洞丨phpMyAdmin漏洞丨iOS设备|安卓恶意软件检测|Burpsuite 本周资讯top3 [Intel漏洞]芯片级安全 ...
- 使用 VSTS 进行 CI 的过程中,无法识别 .NET Core 2.x 的情况处理
大概是由于 .NET Core 2.1 还没有正式发布,使用 VSTS 进行持续集成(CI)的过程中,自动 Build 的环节无法识别 .NET Core 2.1 的框架,查看日志会提示如下错误: V ...
- ScrollView嵌套子View的getDrawingCache为空的解决方法
ScrollView嵌套子View的getDrawingCache为空的解决方法 问题 将组件的显示布局改为可以滚动的,然后用ScrollView作为了View的父类,发现View的getDrawin ...
- 第34节:Java当中的异常
Java当中的异常 了解Java当中的异常,那么什么是异常呢?异常又有什么分类呢?异常中的特殊结构:try...catch...finally 结构的使用方法. 异常是一种对象,是靠虚拟机产生的,异常 ...
- CSS3实现背景透明文字不透明
最近遇到一个需求,如下图,input框要有透明效果 首先想到的方法是CSS3的 opacity属性,但事实证明我想的太简单了 这个属性虽然让input框有透明效果,同时文字和字体图标也会有透明效果,导 ...
- 使用FormData格式在前后端传递数据
为什么一定要使用formdata格式……很大原因是因为当时我犯蠢…… 前端肯定是JS了,具体不写了,使用Postman测试,后端语言是Java,框架Spring Boot,使用IntelliJ IDE ...
- Android--UI之Gallery
前言 这篇博客讲解一下Android开发中,Gallery控件的使用,这是一个画廊视图,用于展示一组图片,用固定在中间位置的水平滚动列表显示列表项的视图.Android最新的API文档中了解到,在An ...
- MySQL 锁信息和事务
1 锁概念 1.1 什么是锁 锁是数据库系统区别于文件系统的一个关键特性.数据库系统使用锁是为了支持对共享资源进行并发访问,提供数据的完整性和一致性.例如:操作缓冲池中的LRU列表,删除.添加.移动L ...