原标题:详解Python中的str.format方法

字符串的内置方法大致有40来个,但是一些常用的其实就那么20几个,而且里面还有类似的用法,区分度高比如:isalpha,isalnum,isdigit,还有一些无时不刻都会用到的split切分,join拼接,strip首尾去指定字符,作用无非就是围绕字符串的增删改查来进行,本人认为要弄清楚和熟练使用这些常用的方法,一方面需要在理解的基础上多多练习多多回顾,同时在工作使用中去巩固,加深记忆。忘记没关系,善于总结归纳,善于对自己大脑记忆的‘增删改查’才是重点。

str.format的意义:

作为一个初学者,最近发现字符串中最繁杂的一个方法莫过于:str.format()了,format见名思义,格式化,格式化完为了干嘛,其实就是为了得到我们需要格式的数据,也就是格式化输出,格式化输出我们一开始学习的是用%s、%d来实现,但是这种方法有很多局限性,比如%s是按照位置格式化输出,局限性显而易见,如果一次性格式化输出太多,还是根据位置来输出的话就太容易出错了。所以更精确的一种格式化输出方法就是str.format()

str.format方法介绍:

1、通过字符串中的花括号{}来识别替换字段,从而完成字符串的格式化。

2、替换的内容包括:字段名、格式说明符三部分,形式一般为:{字段名:格式说明符}

以上是简介,下面是干货:

具体实现:

1、简单实现方法:

(1)省略不写{} ____写法类似%s按位置格式化输出

(2)数字{十进制非负整数} ____写法类似依据位置索引传参

(3)变量名{关键字} ____写法类似关键字参数传参

(4)可以混合使用

1.1 省略不写:花括号内省略不写,代表传递位置参数

替换字段形式{}

注意事项:花括号个数少于等于后面的位置参数的个数,多了肯定报错。

# 用{}代表占位符,直接位置传参

print('我是{},喜欢{}!'.format('灭霸','打响指'))

# 我是灭霸,喜欢打响指!

# {}数量必须少于后面位置参数数量,不然报错

print('我是{},喜欢{},不喜欢{}。'.format('宙斯','放大抢人头','放空大','小短腿'))

print('我是{},喜欢{},不喜欢{}。'.format('宙斯','放大抢人头'))

# 报错误:IndexError: tuple index out of range

1.2 数字形式传参:通过位置索引值传递位置参数

索引从整数0开始

索引可以重复引用,输出

索引数值就是后面位置参数放入一个元组来取值的过程,所以索引数值不能大于元组里面位置参数的最大索引值,否则报错

print('我身高{0},年龄正好{1},{2}长。'.format('180cm',18,'15cm'))

# 我身高180cm,年龄正好18,15cm长。

print('我身高{0},{0}不多不少,年龄正好{1}。'.format('180cm',18))

# 我身高180cm,180cm不多不少,年龄正好18。

print('我身高{0},年龄正好{1},{2}长。'.format('180cm',18))

# IndexError: tuple index out of range

方法相当于*args和**kwargs打散传参,元组按位置或索引传参,字典按关键字传参。

位置参数、关键字参数、*元组、**字典也可以同时使用,但要注意位置参数在关键字参数前,*元组要在**字典前。

# 元组

print('我喜欢{},喜欢{},同时也喜欢{}!'.format(*('篮球','足球','观球')))

# 我喜欢篮球,喜欢足球,同时也喜欢观球!

print('我喜欢{0},喜欢{1},同时也喜欢{2}!'.format(*('篮球','足球','观球')))

# 我喜欢篮球,喜欢足球,同时也喜欢观球!

# 字典

print('{name}的女朋友是{gf},我也喜欢{gf}!'.format(**{'name':'钢铁侠','gf':'小辣椒'}))

# 钢铁侠的女朋友是小辣椒,我也喜欢小辣椒!

# 元组+字典

print('我是{beauty}的{1},我们都喜欢{0},请大家{2}!'\

.format(*('球类','球迷','文明观球'),**{'beauty':'斯嘉丽约翰逊',}))

# 我是斯嘉丽约翰逊的球迷,我们都喜欢球类,请大家文明观球!

# 位置参数、关键字参数、元组、字典混合使用:

print('我是{name},好像{age}了 ^_^,在{0},等你哦!\n喜欢{1}、{2}和{3}。\n我的唯一 >>>:{only_one}\n我的小可爱 >>>: {love}!'\

.format('武汉',name='苏光体',age=18,*('读书','健身','折腾数码'),**{'only_one':'杨林','love':'苏弘睿'}))

# 我是苏光体,好像18了 ^_^,在武汉,等你哦!

# 喜欢读书、健身和折腾数码。

# 我的唯一 >>>:杨林

# 我的小可爱 >>>: 苏弘睿!

使用元组或者字典格式化输出的形式就是相当于将元组和字典打散,变成位置参数们和关键字参数们然后按照前面的方法传参就行。

3、对象参数格式化输出传值:

formate还可以使用对象属性传参,这个对象可以是实例化的对象,也可以是列表、字典。

# 对象属性传参

# 实例化对象:

class Dog:

def __init__(self,name,speak):

self.name=name

self.speak=speak

dog1=Dog('小黄','汪汪汪')

print('我的{0.name}会{0.speak}。'.format(dog1))

# 我的小黄会汪汪汪。

# 文件对象

with open('text.txt','wb')

as f:

print('打开的文件名为:{0.name}'.format(f))

# 打开的文件名为:text.txt

# 列表、字典对象

print('I have a {0[0]} , I have a {0[1]} .'.format(['Apple','Pen']))

print('我叫{0[name]},{0[id]}就是我!'.format({'name':'阿星','id':'9527'}))

print('{1[name]}变成了{0[0]},藏进了{1[role]}的裤裆里,为什么不变{0[1]}而是{0[0]}呢?'.format(['葡萄','苹果'],{'name':'菩提老祖','role':'至尊宝'}))

# I have a Apple , I have a Pen .

# 我叫阿星,9527就是我!

# 菩提老祖变成了葡萄,藏进了至尊宝的裤裆里,为什么不变苹果而是葡萄呢?

4、格式说明符:规定传入参数字符的格式

比如:

print('{0:.4f}'.format(3.1415926))

#在传入参数后面用冒号:写入规定的格式:.4f(取4位小数) 结果为:3.1416

原文至:https://www.py.cn/jishu/jichu/11034.html返回搜狐,查看更多

责任编辑:

python里的str.format_详解Python中的str.format方法相关推荐

  1. mysql_slow_详解MySQL中SlowLog的配置方法(图文)

    mysql 日志系统上线有段时间了,前端在慢慢切站点过来写入,未雨绸缪 diy了套 mysql 监控工具. 分为 slave  status ,sync,objec infot,userprivile ...

  2. python变量定义大全_详解python变量与数据类型

    这篇文章我们学习 Python 变量与数据类型 变量 变量来源于数学,是计算机语言中能储存计算结果或能表示值抽象概念,变量可以通过变量名访问.在 Python 中 变量命名规定,必须是大小写英文,数字 ...

  3. python利器的使用-图文详解python开发利器之ulipad的使用实践

    Ulipad是一个国人limodou编写的专业Python编辑器,它基于wxpython开发的GUI(图形化界面).下面这篇文章主要介绍了python开发利器之ulipad的使用实践,文中介绍的非常详 ...

  4. python提取hbase数据_详解python操作hbase数据的方法介绍

    配置 thrift python使用的包 thrift 个人使用的python 编译器是pycharm community edition. 在工程中设置中,找到project interpreter ...

  5. python多线程操作列表_详解Python多线程下的list

    list 是 Python 常用的几个基本数据类型之一.正常情况下我们会对 list 有增删改查的操作,显然易见不会有任何问题.那么如果我们试着在多线程下操作list 会有问题吗? 多线程下的 lis ...

  6. python装饰器由浅入深_详解Python装饰器由浅入深

    装饰器的功能在很多语言中都有,名字也不尽相同,其实它体现的是一种设计模式,强调的是开放封闭原则,更多的用于后期功能升级而不是编写新的代码.装饰器不光能装饰函数,也能装饰其他的对象,比如类,但通常,我们 ...

  7. python停止线程池_详解python中Threadpool线程池任务终止示例代码

    需求 加入我们需要处理一串个位数(0~9),奇数时需要循环打印它:偶数则等待对应时长并完成所有任务:0则是错误,但不需要终止任务,可以自定义一些处理. 关键点 定义func函数处理需求 callbac ...

  8. python模块搜索原则_详解python模块路径查找规则及定义

    在python中创建一个模块非常简单,只需要在当前目录下创建一个 .py文件即可,系统自动将其解析成模块,文件名就是模块名.很多我们源码时代的同学都认为在查找模块时优先使用当前目录下的自定义模块.其实 ...

  9. python repair修复功能_详解Python修复遥感影像条带的两种方式

    GDAL修复Landsat ETM+影像条带 Landsat7 ETM+卫星影像由于卫星传感器故障,导致此后获取的影像出现了条带.如下图所示, 影像中均匀的布满条带. 使用GDAL修复影像条带的代码如 ...

  10. python导入模块介绍_详解Python模块导入方法

    python常被昵称为胶水语言,它能很轻松的把用其他语言制作的各种模块(尤其是C/C++)轻松联结在一起.python包含子目录中的模块方法比较简单,关键是能够在sys.path里面找到通向模块文件的 ...

最新文章

  1. QT如何设置应用程序的图标
  2. Windows中命令提示符被禁用的解决方法
  3. 走进PV,UV,IP,session
  4. Android平台SQLite快速入门“.NET研究”实践
  5. 4.1 模拟低通滤波器设计
  6. 24点游戏(C++)
  7. 新手如何学电影解说剪辑全教程
  8. beetl模板使用场景_Beetl使用指南
  9. 医院信息化服务器配置,医院信息化建设方案(完整).doc
  10. matlab生成的图片里怎么加入字体,Matlab,Visio等生成的图片的字体嵌入问题解决方法...
  11. 邓亚萍加盟人民日报社 担任人民搜索一把手
  12. electron开发客户端注意事项(兼开源个人知识管理工具“想学吗”)
  13. oracle otl,使用OTL操作Oracle数据库
  14. 自动动手打造绿色的Photoshop CS2
  15. Unity AreaLight使用
  16. iOS直播:评论框与粒子系统点赞动画
  17. 470Ω排阻阻值测量
  18. ssm基于javaweb的医疗健康知识管理系统设计与实现毕业设计源码
  19. 想参加IT培训,了解到达内、蜗牛学院、优就业、黑马、善知教育等机构,哪家比较好?
  20. linux查看文件内容常用命令

热门文章

  1. 自然语言处理NLP基础知识
  2. 面试经验(妙计旅行:C++算法工程师)
  3. 雷达原理---时频分析--6.利用小波分析进行奇异点定位和消除
  4. 031-JVM-合并写(write combining)
  5. C语言 将一个3*3的矩阵转置,用函数和指针实现
  6. 2014年华为收入122亿美元
  7. android qq分享图文中的图标不显示问题的解决
  8. 使用电容触摸屏做画板——软件IIC(二)
  9. 《关键对话——掌握关键对话》读书笔记(二)
  10. oracle 播布客 视频,播布客视频-Managing Indexes笔记