python学习之字符串常用方法和格式化字符串
Python中的字符串同样适用标准的序列操作(索引,分片,乘法,成员判断,求长度,取最小值和最大值),但因为字符串是不可变的,因此字符串不支持分片赋值。
s='http://www.baidu.com'
s[-3:]='aaa'
print(s)
输出结果:
s[-3:]='aaa'
TypeError: 'str' object does not support item assignment
可以看出抛出的错误信息,字符串不允许标记内部项。
但我们可以在字符串中用一个百分比符号%s标记出一个占位符,它表示我们将要在该位置插入转换值的位置。s将会被格式化为字符串,如果被转换的对象不是字符串,则会将其转换为字符串。
模板字符串
除了用%s插入转换值外,还可以使用substitute模板方法,用传递进来的关键字参数替换字符串中的关键字。
from string import Template
s=Template('$x,glorious $b')
s=s.substitute(x='slurm',b='haha')
print(s)
输出结果:
slurm,glorious haha
我们看到$s位置被替换为slurm,$b位置被替换为haha
如果被替换的位置是单词的一部分,可以将其用{}括起来
from string import Template
s=Template('${x}glorious $b')
s=s.substitute(x='slurm',b='haha')
输出结果:
slurmglorious haha
使用字典变量提供值得/名称对替换
from string import Template
s=Template('$name come from $county ')
d={}
d['name']='zhangsan'
d['county']='china'
s=s.substitute(d)
print(s)
输出结果:
zhangsan come from china
格式化输出多个参数
s='%s come from %s'%('zhangsan','china')
print(s)
输出结果:
zhangsan come from china
字符串格式化转换类型
| 转换类型 | 解释 |
| d,i | 带符号的十进制整数 |
| o | 不带符号的八进制 |
| u | 不带符号的十进制 |
| x | 不带符号的十六进制 |
| e | 科学计数法表示的浮点数(小写) |
| E | 科学计数法表示浮点数(大写) |
| f.F | 十进制浮点数 |
| c | 单字符 |
| r | 字符串(用repr转换任意Python对象) |
| s | 字符串(用str转换任意python对象) |
字符串与utf8互转
s='你好'
print(s.encode('utf8'))
a=s.encode('utf8')
print(a.decode('utf8'))
输出结果:
b'\xe4\xbd\xa0\xe5\xa5\xbd'
你好
字符串的宽度和精度
宽度是指转换后的值所保留的最小字符个数,精度则是结果中应该包含的小数位数
例如 输出宽度为10的pi的值
from math import pi
p='%10f'%pi
for k, i in enumerate(p) : #使用enumerate函数打印序列
print('序列%s'%k,i)
序列0
序列1
序列2 3
序列3 .
序列4 1
序列5 4
序列6 1
序列7 5
序列8 9
序列9 3
打印精度为2的pi的值
from math import pi
p='%.2f'%pi
print(p)
输出结果:
3.14
打印宽度为10,精度为2的pi的值
from math import pi
p='%10.2f'%pi
for k,i in enumerate(p):
print('序列%s 打印值%s'%(k,i))
打印结果:
序列0 打印值
序列1 打印值
序列2 打印值
序列3 打印值
序列4 打印值
序列5 打印值
序列6 打印值3
序列7 打印值.
序列8 打印值1
序列9 打印值4
我们看到,当整数部分没有值时,将以空' ' 代替。
print('%+5d'%10)
print('%+5d'%-10)
输出:
+10
-10
使用 '-'用来左对齐数值,用'+'表示不管是整数还是复数都会标识出符号
使用字符串格式化,使我们的代码看着更简洁
width=input('>>输入宽度:')
price_with=10
item_width=int(width)-price_with
header_format='%-*s%*s'
format='%-*s%*.2f'
print('='*int(width))
print(header_format%(item_width,'item',price_with,'price'))
print('_'*int(width))
print(format%(item_width,'apple',price_with,0.4))
print(format%(item_width,'Pears',price_with,0.5))
输出结果:
>>输入宽度:30
==============================
item price
______________________________
apple 0.40
Pears 0.50
字符串的常用方法:
| 方法名 | 解释 | 案例 |
| find | 在一个长的字符串中查找字符串,返回字符串所在位置的最左端的索引,如果没有则返回-1 |
str='hello world' |
| join | 用来连接列表中的字符串 |
l=['1','2','3','4','5','6'] |
| lower | 返回字符串的小写母版(忽略用户大小写时使用,例如,用户输入用户名含有大写字母,输入后将其转换为小写并与数据库中的保存字符匹配) |
str='HELLO WORLD' |
| replace | 返回字符串中所有被匹配项被替换后的所得到的新字符串 |
str='HELLO WORLD' |
| split | 按某个分隔符将字符串分割成序列,默认以空格符分割 |
str='1+2+3+4' |
| strip | 去除字符串两边的空格 |
str=' HELLO WORLD ' |
| maketrans | 创建字符映射的转换表,接收两个参数,第一个参数是字符串,表示要转换的字符串,第二个参数也是字符串表示转换的目标(两个参数是映射关系(一一对映),因此长度必须相同) |
intab = "el" |
python学习之字符串常用方法和格式化字符串的更多相关文章
- python学习6—数据类型之集合与字符串格式化
python学习6—数据类型之集合与字符串格式化 1. 使用id()可以查看一个变量的内存地址: name = 'alex' id(name) 2. 进制转换 十进制转换为二进制等: a = 10 # ...
- python学习 day3 (3月4日)---字符串
字符串: 下标(索引) 切片[起始:终止] 步长[起始:终止:1] 或者-1 从后往前 -1 -2 -3 15个专属方法: 1-6 : 格式:大小写 , 居中(6) s.capitalize() s ...
- Python从菜鸟到高手:格式化字符串
1. 字符串格式化基础 字符串格式化相当于字符串模板.也就是说,如果一个字符串有一部分是固定的,而另一部分是动态变化的,那么就可以将固定的部分做成模板,然后那些动态变化的部分使用字符串格式化操作符(% ...
- python学习笔记之二:使用字符串
这里会介绍如何使用字符串格式化其他的值,并了解一下利用字符串的分割,连接,搜索等方法能做些什么. 1.基本字符串操作 所有标准的序列操作(索引,分片,乘法,判断成员资格,求长度,取最大值和最小值)对字 ...
- Python中使用%还是format来格式化字符串?
Python中应该使用%还是format来格式化字符串? %还是format Python中格式化字符串目前有两种阵营:%和format,我们应该选择哪种呢? 自从Python2.6引入了form ...
- Python 学习 第二篇:数据类型(字符串)
字符串是一个字符的.有序的.不可变的序列,用于存储基于文本的信息.字符串所包含的字符存在从左至右的位置顺序,不可以在原处(in-place)修改.Python没有C语言的字符和字符串之分,只有字符串. ...
- Python学习笔记(四):字符串的学习
总结的内容: 1.字符串常用的方法 2.Python字符串格式化 3.Python字符串转义字 字符串是 Python 中最常用的数据类型.我们可以使用引号('或")来创建字符串. 创建字符 ...
- python字符串常用方法、分割字符串等
一.字符串的常用方法 1.str.capitalize() 字符串首字母大写 2.str.center() 把字符串居中 3.str.isalnum() 判断字符串是否含有英文.数字,若有英文和数 ...
- Python学习笔记(二):字符串类型
在上一篇随笔(https://www.cnblogs.com/g-qiang/p/10448813.html)中,说到 Python 有六种标准数据类型,而数字类型和字符串类型又是其中基本的数据类型. ...
随机推荐
- mvc4站点支持.html
MVc站点在配置通配符后,还需要配置这个才能支持.html.在自定义的路由中加入.自定义代码就可以支持子定义的html了.
- python3的学习经验
网上资料非常多,颇有些“乱花渐欲迷人眼”的意味,个人看了不少,拖之前从事前端的福,发现廖雪峰大神的网站里有.学了2天之后发觉获益良多,网址:https://www.liaoxuefeng.com/wi ...
- Nginx+Tomcat+Session 高性能群集搭建
随着IT行业的发展,linux服务器在企业中应用广泛,人们对linux上的应用服务要求也越来越高,早先的apache服务器.apache有优点也 有不足,apache渐渐不能满足人们的要求,目前ngi ...
- March 1 2017 Week 9 Wednesday
If you are serious giving up something, giving up is not serious at all. 如果你慎重地决定要放弃,那么放弃本身就没什么大不了的. ...
- thrift基本概念和实例
一.thrift可以做什么 thrift是一个跨语言通信的工具,支持的语言多,而且还提供服务器端的众多网络模型,使服务端的开发可以只专于服务本身的逻辑. 二.thrift重要概念 1.processo ...
- 【[NOI2018]你的名字】
题目 可能是一个乱搞做法,同时也跪求有人能帮我分析一下复杂度 还是先来看比较简单的\(68pts\),也就是\(l=1,r=|S|\)的情况 我们可以直接把\(S\)串和所有的\(T\)串一起建一个广 ...
- react开发环境准备
使用reactjs,我们有两种方式 一种是通过script标签引入reactjs,这是一种比较古老的编码方式了, 如果我们的项目比较大,你会对项目js进行拆分,然后页面就会通过script标签加载很多 ...
- 【转】Dalvik虚拟机的启动过程分析
在Android系统中,应用程序进程都是由Zygote进程孵化出来的,而Zygote进程是由Init进程启动的.Zygote进程在启动时会创建一个Dalvik虚拟机实例,每当它孵化一个新的应用程序进程 ...
- javascript运算符——条件、逗号、赋值、()和void运算符 (转载)
原文出自 作者:小火柴的蓝色理想 javascript中运算符总共有46个,除了前面已经介绍过的算术运算符.关系运算符.位运算符.逻辑运算符之外,还有很多运算符.本文将介绍条件运算符.逗号运算符. ...
- Android学习笔记_7_使用 sax 或者 dom 或者 pull 解析XML文件
一.Pull解析介绍: Android上使用SAX和DOM方式解析XML的方法,并且对两种做了简单的比较,通过比较我们知道对在往往内存比较稀缺的移动设备上运行的Android系统来说,SAX是一种比较 ...