首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

第3.9节 使用模板字符串的字符串格式化方法

  • 23-09-22 18:41
  • 2073
  • 9453
blog.csdn.net

一、    引言
上节介绍了使用百分号占位符的字符串格式化方法,看起来功能很强大,但存在两个问题:
1、    在字符串格式化时必须知道变量的类型才能调用相应的格式化类型编码(如%s,也称为转换说明符),当变量类型发生变化时,需要一个个去查找格式化字符串修改对应的格式化类型编码;
2、    当格式化字符串的百分号占位符比较多时,不容易找到占位符与后面真实值之间的对应关系。
模板字符串的这种解决方案就是为了解决这两个问题提出的。

二、    模板字符串的操作方法
1.    从string模块引入模板方法
from string import Template
2.    将格式化字符串作为参数传入Template方法中创建字符串模板
此处的格式化字符串与上节的要求不同,要求使用$作为格式符,后面跟真实值对应的名字,这个名字称为“关键字参数”,这个名字必须符合Python变量命名的规范,如不能是数字、保留字,要易于记忆、好使用,跟真实值的变量名没有一致性要求,但一般为了程序可读性都会使用真实值的变量值或键值,没有其他要求。
语法:模板=Template(格式化字符串)
注意:如果格式化字符串原来就包含$符号,与格式符对$符号的使用冲突,此时用两个$符号(这个是老猿根据Python对百分号和反斜杠的处理联想出来的,一试果然如此)来表示是字符$,不是格式符。因此如果关键字参数前出现了两个$符号,则系统不再将后面的名字作为关键字参数,而作为普通字符串处理。这种处理在程序执行过程替换真实值过程不会报语法错误。
3.    使用真实值替换关键字参数
语法:模板.substitute(关键字参数1=真实值1,关键字参数2=真实值2……)
4.    举例
以上节的学生信息输出为例:
1)    正确案例
from string import Template as T  #导入模板方法命名为T
student={'name':'小明','class':'20190301','score':597.5}
#格式化串,注意用了classno而没有用class,因为class是保留字
s='$classno 班 $name 同学,总分:$score'  
#定义模板,其实可以直接将字符串作为参数不存储到s再传入,存储到s可以看看处理前后s是否有变化
tmp=T(s)  
#执行替换,输出为格式化后的串,原串s保持不变
tmp.substitute (name=student['name'],classno=student['classno'],score=student['score']) 
#输出为:20190301 班 小明 同学,总分:597.5
2)    使用$错误的案例
a)    s='$$classno 班 $name 同学,总分:$score'  
以上格式化字符串执行替换后结果成为了:
'$classno 班 小明 同学,总分:597.5'
系统并没有报错,两个$作为一个字符输出,后面的关键字参数也被作为字符串原样输出,同时说明替换时多传数据是没问题的。
b)    s='$classno 班 $name 同学,$总分:$score'
字符串‘总分前’有单独的$符号,在执行替换时系统报错。
3)    以上案例执行代码截屏

本节介绍了通过模板字符串方法进行格式化输出的方法,这个方法能解决使用百分号占位符的字符串格式化的部分问题,但也带来了新的问题,就是无法指定宽带、精度、对齐方式等格式化输出常用的格式控制,同时使用单独的替换语句比直接格式化显得复杂。后面章节再继续介绍字符串格式化的更多更好的方法。

老猿Python系列文章用于逐步介绍老猿学习Python后总结的学习经验,这些经验有助于没有接触过Python的程序员可以很容易地进入Python的世界。该系列文章同步发表于:
http://blog.sina.com.cn/learnpython   注:新浪暂停了pc的博客更新,等恢复后补齐
http://laoyuanpython.lofter.com/
https://me.csdn.net/LaoYuanPython
由于csdn对技术文章的支持度最好,推荐大家访问csdn。欢迎大家批评指正,谢谢大家关注!

文章知识点与官方知识档案匹配,可进一步学习相关知识
Python入门技能树进阶语法字符串方法333596 人正在系统学习中
老猿Python
微信公众号
专注Python相关语言、图像音视频处理、AI
注:本文转载自blog.csdn.net的LaoYuanPython的文章"https://blog.csdn.net/LaoYuanPython/article/details/89458108"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2024 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top