3.1.4 模板字符串

原创 2015年07月11日 08:16:51

在字符串中进行字符串替换,一般是使用%s来格式化解决,但这种格式化使用起来比较复杂,并且即使是熟悉的开发人员使用起来也容易出错。为了解决这些问题,在字符串库里提供一个模板类。具体情况可以参考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  深圳

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

KMP字符串匹配模板

手把手教你 cxf3.1.4整合spring4.2

1、开发工具:Eclipse4.5   + tomcat8  + jdk8  + cxf3.1.4  + spring4.2 2、首先Eclipse新建两个web工程,,一个模拟server端发布w...

定长字符串模板类

win10 openmeetings-3.1.4 配置

01 基本环境OpenMeetings是一个多语言可定制的视频会议和协作系统。它支持音频、视频,能让你查看每个与会者的桌面。OpenMeetings还包含一个白板,通过白板可以导入各种格式的图片和涂鸦...
  • longji
  • longji
  • 2017-01-23 21:08
  • 1025

ShareSDK jar 包和新浪weiboSDKCore_3.1.4.jar包冲突解决方案

之前由于项目中的分享使用了ShareSDK的一键分享 但是由于最近产品新增需求,要在客户端内集成微博授权第三方登陆,集成到工程里面以后发现,在打包的时候会报 ...

[U]3.1.4 Shaping Regions 递归,计算几何

一道很有意思的题目。只是今天的课程比较紧张,中午敲了下题,下午上完课后接着敲了下题。改了些bug,终于还是过了。鼓励一下~ 解题思路: 题目大意是矩形覆盖问题,求最终见到的各种颜色矩形的面积。由于...

移植DHCP client 到micro2440 linux-3.1.4

http://blog.csdn.net/liukun321/article/details/7259707 可以用两种方法来实现DHCP客户端,下面简单说明一下操作过程: 1.用bu...

《挑战程序设计竞赛》3.1.4 二分搜索-最小化第k大的值 POJ2010 3662(2)

POJ2010http://poj.org/problem?id=2010题意给出n个数,要求将这n个数两两相减,把这些相减得到的数排序后,输出位置在中间的那个数。思路如果两两相减再排序复杂度太高,肯...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)