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')
print

输出结果:

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'
print(str.find('world'))
输出:6
str='hello world'
print(str.find('worldd'))
输出:-1
join 用来连接列表中的字符串
l=['1','2','3','4','5','6']
sep='+'
ret=sep.join(l)
print(ret)
输出:
1+2+3+4+5+6
lower 返回字符串的小写母版(忽略用户大小写时使用,例如,用户输入用户名含有大写字母,输入后将其转换为小写并与数据库中的保存字符匹配)
str='HELLO WORLD'
print(str.lower())
输出:
hello world
replace 返回字符串中所有被匹配项被替换后的所得到的新字符串
str='HELLO WORLD'
print(str.lower().replace('world','python'))
输出:
hello python
split 按某个分隔符将字符串分割成序列,默认以空格符分割
str='1+2+3+4'
print(str.split('+'))
输出结果:
['1', '2', '3', '4'] str='HELLO WORLD'
print(str.split())
输出结果:
['HELLO', 'WORLD']
strip 去除字符串两边的空格
str='  HELLO WORLD   '
print(str.strip())
输出结果:
HELLO WORLD
maketrans 创建字符映射的转换表,接收两个参数,第一个参数是字符串,表示要转换的字符串,第二个参数也是字符串表示转换的目标(两个参数是映射关系(一一对映),因此长度必须相同)
intab = "el"
outtab = "EL"
trantab = str.maketrans(intab, outtab)
str = "hello world"
print (str.translate(trantab)) 输出:
hELLo worLd

python学习之字符串常用方法和格式化字符串的更多相关文章

  1. python学习6—数据类型之集合与字符串格式化

    python学习6—数据类型之集合与字符串格式化 1. 使用id()可以查看一个变量的内存地址: name = 'alex' id(name) 2. 进制转换 十进制转换为二进制等: a = 10 # ...

  2. python学习 day3 (3月4日)---字符串

    字符串: 下标(索引) 切片[起始:终止] 步长[起始:终止:1] 或者-1 从后往前 -1 -2 -3 15个专属方法: 1-6  : 格式:大小写 , 居中(6) s.capitalize() s ...

  3. Python从菜鸟到高手:格式化字符串

    1. 字符串格式化基础 字符串格式化相当于字符串模板.也就是说,如果一个字符串有一部分是固定的,而另一部分是动态变化的,那么就可以将固定的部分做成模板,然后那些动态变化的部分使用字符串格式化操作符(% ...

  4. python学习笔记之二:使用字符串

    这里会介绍如何使用字符串格式化其他的值,并了解一下利用字符串的分割,连接,搜索等方法能做些什么. 1.基本字符串操作 所有标准的序列操作(索引,分片,乘法,判断成员资格,求长度,取最大值和最小值)对字 ...

  5. Python中使用%还是format来格式化字符串?

    Python中应该使用%还是format来格式化字符串?   %还是format Python中格式化字符串目前有两种阵营:%和format,我们应该选择哪种呢? 自从Python2.6引入了form ...

  6. Python 学习 第二篇:数据类型(字符串)

    字符串是一个字符的.有序的.不可变的序列,用于存储基于文本的信息.字符串所包含的字符存在从左至右的位置顺序,不可以在原处(in-place)修改.Python没有C语言的字符和字符串之分,只有字符串. ...

  7. Python学习笔记(四):字符串的学习

    总结的内容: 1.字符串常用的方法 2.Python字符串格式化 3.Python字符串转义字 字符串是 Python 中最常用的数据类型.我们可以使用引号('或")来创建字符串. 创建字符 ...

  8. python字符串常用方法、分割字符串等

    一.字符串的常用方法 1.str.capitalize()  字符串首字母大写 2.str.center()  把字符串居中 3.str.isalnum() 判断字符串是否含有英文.数字,若有英文和数 ...

  9. Python学习笔记(二):字符串类型

    在上一篇随笔(https://www.cnblogs.com/g-qiang/p/10448813.html)中,说到 Python 有六种标准数据类型,而数字类型和字符串类型又是其中基本的数据类型. ...

随机推荐

  1. 本地数据库(sql server)插入一条新数据时,同步到服务器数据库

    之前有个同学问我,本地数据库插入新数据时怎么同步到服务器上,当时我先想到是程序逻辑控制,作相应的处理. 但有时候我们程序不太好处理,那能不能从数据库入手呢,数据库不是有触发器(Trigger)吗,应该 ...

  2. SQL Server 2012安装配置(Part2 )

    2 服务器安装 运行安装程序后,首先进入 SQL Server 安装中心.选择左侧导航树中的"安装"菜单项. 图2-1 SQL Server 安装中心 在右侧菜单中点击" ...

  3. 一个sql server 实施工程师的反思

    自14年开始从事数据库实施,至今(2018-02-16)晃眼间已经四个年头过去了,工作上的能力要求多数能自己解决,可这不应该成为我学习路上的终点.加之总觉得自己对sql 的理解有些浮于表面,所以借着春 ...

  4. Vue项目中引入mockjs

    前提:创建好的vue项目 前言: 为什么引入mockjs:为了实现前后端分离,开发工作可以异步进行 其他工具:axios 一般的前后端交互过程:前端 --> ajax请求 --> 网络协议 ...

  5. 笨办法学Python(三十八)

    习题 38: 阅读代码 现在去找一些 Python 代码阅读一下.你需要自己找代码,然后从中学习一些东西.你学到的东西已经足够让你看懂一些代码了,但你可能还无法理解这些代码的功能.这节课我要教给你的是 ...

  6. Qt 静态编译发布和动态编译发布

    静态编译发布 你写了一个小型Qt程序,发布的时候不想要一大堆dll文件,就只想打包成一个exe文件,那么就需要用到静态编译. 下面的教程就是Qt静态编译环境配置 Qt5.6静态编译包下载地址 1.下载 ...

  7. Python变量和数据类型(入门2)

    转载请标明出处: http://www.cnblogs.com/why168888/p/6400809.html 本文出自:[Edwin博客园] Python变量和数据类型 一.整数 int = 20 ...

  8. Ubuntu环境安装Gradle

    AndroidStudio使用全新的构建系列—–Gradle. 这是官方为什么使用gradle 的理由: Domain Specific Language (DSL) to describe and ...

  9. HTTP 状态码 301 302

    301 Moved Permanently被请求的资源已永久移动到新位置,并且将来任何对此资源的引用都应该使用本响应返回的若干个URI之一.如果可能,拥有链接编辑功能的客户端应当自动把请求的地址修改为 ...

  10. darknet53 yolo 下的识别训练

    [目录] 一. 安装Darknet(仅CPU下) 2 1.1在CPU下安装Darknet方式 2 1.2在GPU下安装Darknet方式 4 二. YOLO.V3训练官网数据集(VOC数据集/COCO ...