Python中模块string.py详解


Posted in Python onMarch 12, 2017

一、用法

字符串常量:

import string

print(string.ascii_lowercase)
print(string.ascii_uppercase)
print(string.ascii_letters)
print(string.digits)
print(string.hexdigits)
print(string.octdigits)
print(string.punctuation)
print(string.printable)

结果

abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
0123456789
0123456789abcdefABCDEF
01234567
!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&'()*+,-
 ./:;<=>?@[\]^_`{|}~

二、Template类:

其实,Template类,可以和格式化字符串的用法还有字符串对象的format()方法做对比,可以帮助更好地理解。首先,新建一个python文件:string_template.py,

然后在里面写入以下内容:

import string

values = {'var': 'foo'}

t = string.Template("""
Variable : $var
Escape  : $$
Variable in text: ${var}iable
""")

print('TEMPLATE:', t.substitute(values))

s = """
Variable : %(var)s
Escape  : %%
Variable in text: %(var)siable
"""

print('INTERPOLATION:', s % values)

s = """
Variable : {var}
Escape  : {{}}
Variable in text: {var}iable
"""

print('FORMAT:', s.format(**values))

然后,在python命令行中输入:

$ python string_template.py

结果

TEMPLATE:
Variable : foo
Escape  : $
Variable in text: fooiable

INTERPOLATION:
Variable : foo
Escape  : %
Variable in text: fooiable

FORMAT:
Variable : foo
Escape  : {}

可以看到三者之间都可以起到对字符串里进行格式化的效果。只是三者的修饰符不一样。Template类好的一点就是其可以通过继承类,实例化后自定义其修饰符,并且也可以对变量的名字格式进行正则表达式的定义。

如string_template_advanced.py示例:

import string
class MyTemplate(string.Template):
 delimiter = '%'
 idpattern = '[a-z]+_[a-z]+'


template_text = '''
 Delimiter : %%
 Replaced : %with_underscore
 Igonred : %notunderscored
'''


d = {
 'with_underscore': 'replaced',
 'notunderscored': 'not replaced',
}

t = MyTemplate(template_text)
print('Modified ID pattern:')
print(t.safe_substitute(d))

首先,解释下上面python文件。里面定义了一个类MyTemplate,继承了string的Template类,然后,对其两个域进行重载: Delimiter为修饰符,现在指定为了‘%',而不是之前的‘$'。 接着,idpattern是对变量的格式指定。

结果

$ python string_template_advanced.py
Modified ID pattern:

 Delimiter : %
 Replaced : replaced
 Igonred : %notunderscored

为什么notunderscored没有被替换呢?原因是我们在类定义的时候,idpattern里指定要出现下划线'_', 而该变量名并没有下划线,故替代不了。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
用python + hadoop streaming 分布式编程(一) -- 原理介绍,样例程序与本地调试
Jul 14 Python
python如何使用正则表达式的前向、后向搜索及前向搜索否定模式详解
Nov 08 Python
Python基础语言学习笔记总结(精华)
Nov 14 Python
python3使用scrapy生成csv文件代码示例
Dec 28 Python
python实现快速排序的示例(二分法思想)
Mar 12 Python
Python遍历numpy数组的实例
Apr 04 Python
dataframe设置两个条件取值的实例
Apr 12 Python
python topN 取最大的N个数或最小的N个数方法
Jun 04 Python
Django csrf 验证问题的实现
Oct 09 Python
OpenCV图像颜色反转算法详解
May 13 Python
Python并发concurrent.futures和asyncio实例
May 04 Python
python中的unittest框架实例详解
Feb 05 Python
Python中第三方库Requests库的高级用法详解
Mar 12 #Python
python 获取网页编码方式实现代码
Mar 11 #Python
python 爬虫出现403禁止访问错误详解
Mar 11 #Python
Python如何读取MySQL数据库表数据
Mar 11 #Python
python3.5 + PyQt5 +Eric6 实现的一个计算器代码
Mar 11 #Python
Python搭建HTTP服务器和FTP服务器
Mar 09 #Python
开源Web应用框架Django图文教程
Mar 09 #Python
You might like
Window 7/XP 安装Apache 2.4与PHP 5.4 的过程详解
2013/06/02 PHP
php实现把数组按指定的个数分隔
2014/02/17 PHP
PHP实现指定字段的多维数组排序函数分享
2015/03/09 PHP
php将字符串转换成16进制的方法
2015/03/17 PHP
php获取今日开始时间和结束时间的方法
2017/02/27 PHP
Javascript下的keyCode键码值表
2007/04/10 Javascript
JavaScript Timer实现代码
2010/02/17 Javascript
jQuery实现form表单reset按钮重置清空表单功能
2012/12/18 Javascript
浅析Bootstrip的select控件绑定数据的问题
2016/05/10 Javascript
JavaScript实现复制文章自动添加版权
2016/08/02 Javascript
AngularJS入门教程之数据绑定用法示例
2016/11/01 Javascript
JavaScript交换两个变量值的七种解决方案
2016/12/01 Javascript
用户管理的设计_jquery的ajax实现二级联动效果
2017/07/13 jQuery
JavaScript使用百度ECharts插件绘制饼图操作示例
2019/11/26 Javascript
使用python装饰器验证配置文件示例
2014/02/24 Python
在Python中使用正则表达式的方法
2015/08/13 Python
深入理解Python3中的http.client模块
2017/03/29 Python
详谈Pandas中iloc和loc以及ix的区别
2018/06/08 Python
Flask框架配置与调试操作示例
2018/07/23 Python
在Pycharm中设置默认自动换行的方法
2019/01/16 Python
pytorch绘制并显示loss曲线和acc曲线,LeNet5识别图像准确率
2020/01/02 Python
什么是Python中的匿名函数
2020/06/02 Python
虚拟环境及venv和virtualenv的区别说明
2021/02/05 Python
英国婚礼商城:Wedding Mall
2019/11/02 全球购物
幼儿园运动会入场词
2014/02/10 职场文书
《春到梅花山》教学反思
2014/04/16 职场文书
信息技术课后反思
2014/04/27 职场文书
就职演讲稿范文
2014/05/19 职场文书
2015年父亲节活动总结
2015/02/12 职场文书
党员“一帮一”活动总结
2015/05/07 职场文书
2016同学毕业寄语大全
2015/12/04 职场文书
个人的事迹材料怎么写
2019/04/24 职场文书
JS一分钟在github+Jekyll的博客中添加访问量功能的实现
2021/04/03 Javascript
铁头也玩根德 YachtBoy YB-230......
2022/04/05 无线电
解决vue中provide inject的响应式监听
2022/04/19 Vue.js
MySQL数据库事务的四大特性
2022/04/20 MySQL