博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
3.1.4 模板字符串
阅读量:6375 次
发布时间:2019-06-23

本文共 1597 字,大约阅读时间需要 5 分钟。

在字符串中进行字符串替换,通常是使用%s来格式化解决,但这样的格式化使用起来比較复杂,而且即使是熟悉的开发者使用起来也easy出错。

为了解决这些问题。在字符串库里提供一个模板类。详细情况能够參考PEP 292文档。

模板类字符串主要使用$开头的替换字符串来取代%开头的字符串。

替换字符串的规则例如以下:

l $$。用两个$来表示一个$字符输出。

l $identifier,用$加标识符方式来识别替换串位置和键值。

当中identifier就是函数里键值对的键。

l ${identifier}。当替换的字符串后面紧跟着字符串时,就须要使用大括号来分隔开,以便能够识别出来键值对的键出来。比方${identifier}abc,因为abc之前紧跟着替换的字符串。

当在替换的过程中,遇到$开头的字符串不能替换时。就会抛出ValueError异常。

class string.Template(template)

构造函数用来构造一个可替换的模板字符串。

 

substitute(mapping, **kwds)

本函数用来实现对模板字符串中占位字符串进行替换。返回一个新的字符串。

參数 mapping 是能够输入字典类的对象;參数kwds是能够输入键值对的对象。在字符串中 替换的字符串的名称与字典中键名称一样。或者与键值对的键名称一样。

 

safe_substitute(mapping, **kwds)

本函数參数和功能与上面substitute函数是一样的,唯一的差别是当找查找替换字符串 时。当未发现有对应的替换字符串,在substitute函数中会抛出异常ValueErrorKeyError 不能继续替换;而在safe_substitute函数会不会抛出异常。但能够继续输出,替换的字 符串不作不论什么改变。

 

样例:

#Template

 

from string import Template

 

s = Template('$$ $who like apple')

print(s.substitute(who='Tom'))

 

s = Template('$$ ${who}abc:$who like apple')

print(s.substitute(who='Tom'))

print(s.safe_substitute())

结果输出例如以下:

$ Tom like apple

$ Tomabc:Tom like apple

$ ${who}abc:$who like apple

 

3.1.5 字符串辅助函数

string.capwords(s, sep=None)

本函数使用str.split()函数来分拆參数s字符串。然后使用str.capitalize()函数进行格式化,把子串变成首字母大写其余字母小写的格式。最后使用str.join()把格式化后的子串进行连接到一起;连接时,假设參数sep等于None或者没有给出,默认使用一个空格作为分隔子串识别符和输出符。反之给出时。就以给出的字母作为分隔符识别和输出。

 

样例:

 

import string

s = 'abc face CHINA            shenzhen'

print(string.capwords(s))

 

s = 'The quick brown fox jumped over the lazy dog.'

print(string.capwords(s))

 

print(string.capwords('abc #abc#test  #dog', sep = '#'))

输出结果例如以下:

Abc Face China Shenzhen

The Quick Brown Fox Jumped Over The Lazy Dog.

Abc #Abc#Test  #Dog

 

 

蔡军生 QQ:9073204  深圳

转载地址:http://fitqa.baihongyu.com/

你可能感兴趣的文章
白利用的集大成者:新型远控木马上演移形换影大法
查看>>
SAS 2016年全球营收达32亿美元 继续保持稳步增长
查看>>
2017必备的八款最佳反勒索软件工具
查看>>
从Effective Java总结一些有助安卓开发的建议
查看>>
以一当十的程序员不是传说
查看>>
Vizinex RFID 和Brady SmartID推出航空标签
查看>>
Facebook 否认趋势话题存在政治偏见,但将做出调整
查看>>
云纵发布“纵横客“ 新一代互联网CRM开启餐饮行业营销新模式
查看>>
物联网到底何时才能称为“爆发”?
查看>>
《Java多线程编程核心技术》——1.2节使用多线程
查看>>
不用惊慌 关于苹果警告的一些分析
查看>>
《VMware 网络技术:原理与实践》—— 2.3 OSI模型
查看>>
金融安全资讯精选 2017年第十五期:普华永道消费者隐私信息保护调研称69%的企业无力面对网络攻击,中小银行转型系统整合中的建议...
查看>>
读书笔记之《实战Java虚拟机》(9):Class 文件结构
查看>>
面对区块链这项全新的技术,传统投资产生了焦虑
查看>>
1024城市峰会 | 当A.I.邂逅古都西安
查看>>
好看的卡片阴影
查看>>
理解 Mach O 并提高程序启动速度
查看>>
Vue实战篇(PC端商城项目)
查看>>
每周记录(二)
查看>>