3.1.4 模板字符串

在字符串中进行字符串替换,一般是使用%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函数中会抛出异常ValueError、KeyError, 不能继续替换;而在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  深圳

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

时间: 2024-11-05 19:30:06

3.1.4 模板字符串的相关文章

ES6的全新特性:模板字符串

作为JavaScript的未来,ES6已经到来.作为已完成的标准,ES6带来了许多新特性使其在如今的web世界仍有竞争力.ES6的方方面面不一定全都适合你,本文集会简要介绍一些顺手且可行的新特性. 我编写JavaScript代码更喜欢使用单引号来定义字符串,而不是双引号.对JavaScript来说两者都可以,下面的两行代码其实作用相同: var animal = "cow"; var animal = 'cow'; 我更喜欢单引号是有原因的.首先,单引号在组合使用HTML字符串和引用属

ES6中模板字符串的使用

要把多个字符串连接起来,可以用"+"号连接: var name = '张三'; var sex = '男';var age= 18; var message = '姓名:'+name + ',性别:' + sex +',今年' + age + '岁了!'; alert(message); ES6新增了一种模板字符串,表示方法和上面的多行字符串一样,但是它会自动替换字符串中的变量: var name = '张三'; var age = 18; alert(`姓名:${name}, 年龄:

ES6模板字符串

看了阮老师的ES6入门再加上自己的一些理解整理出的学习笔记 介绍: 样子: `` 反引号,tab上面的那个键,同该符号包裹的字符串能够带来的功能如下: 可以包涵换行 在反引号以内,可以有多个换行,都能够在使用的时候被识别 可以嵌入变量 使用美元符号和大括号包裹变量${对象名.属性名} 可以原生输出  原生输出包含转义字符串的内容String.raw模板字符串 例子: 传统的JavaScript语言,输出模板通常是这样写的,字符串拼接很让人头疼,也很容易出错. $('#result').appen

ES6新特性之模板字符串

ES6新特性概览  http://www.cnblogs.com/Wayou/p/es6_new_features.html 深入浅出ES6(四):模板字符串   http://www.infoq.com/cn/articles/es6-in-depth-template-string

深入浅出ES6(四):模板字符串

作者 Jason Orendorff  github主页  https://github.com/jorendorff 反撇号(`)基础知识 ES6引入了一种新型的字符串字面量语法,我们称之为模板字符串(template strings).除了使用反撇号字符 ` 代替普通字符串的引号 ' 或 " 外,它们看起来与普通字符串并无二致.在最简单的情况下,它们与普通字符串的表现一致: context.fillText(`Ceci n'est pas une chaîne.`, x, y); 但是我们并

ES6新语法之---对象字面量扩展、模板字符串(5)

这节课学习ES6中对象字面量扩展和新增模板字符串 第一部分:对象字面量扩展 1.简洁写法 ES6对于对象字面量属性提供了简写方式. 1.1:属性简写 //传统写法 var x = 2, y = 3, o = { x: x, y: y }; //ES6简洁写法 var x = 2, y = 3, o = { x, //属性名和赋值变量名相同时,可简写 y }; 1.2:方法简写 //传统写法 var o = { x: function() { //... }, y: function() { //

ES6特性-带标签的模板字符串(tagged template)

tagged template: 加在模板字符串前面加一个标签(函数). let dessert = = '甜品' drink = '茶' let breakfast = kitchen`今天的早餐是${dessert} 与 ${drink}!` function kitchen(strings,...values){ console.log(strings); console.log(values); } strings和value都是数组,里面分别是string和value: 原文地址:ht

ES6多行字符串+模板字符串

多行字符串 最新的ES6标准新增了一种多行字符串的表示方法,用反引号 ` ... ` 表示: 'use strict'; // 如果浏览器支持模板字符串,将会替换字符串内部的变量: var name = '小明'; var age = 20; console.log(`你好, ${name}, 你今年${age}岁了!`); 如果有很多变量需要连接,用+号就比较麻烦.ES6新增了一种模板字符串,表示方法和上面的多行字符串一样,但是它会自动替换字符串中的变量: var name = '小明'; v

ES6中的模板字符串---反引号``

在react中,反引号``有特殊的含义. 如MDN中所述,模板字符串(Template literals)允许嵌入表达式,并且支持多行字符串和字符串插补特性.基本语法为以下几种: 其中第一行为最基本用法,即使用反引号 ('`') 来代替普通字符串中的用双引号和单引号. 第二行为多行字符串用法,即反引号中文本可以直接接受换行而不必使用\n换行符来强制换行. 第三行则为模板字符串的最核心用法,即反引号中的${expression}占位符中expression可以为任意的JavaScript表达式,甚