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中关键字is与==的区别简述
Jul 31 Python
python采用getopt解析命令行输入参数实例
Sep 30 Python
用python结合jieba和wordcloud实现词云效果
Sep 05 Python
Python批量提取PDF文件中文本的脚本
Mar 14 Python
python解决js文件utf-8编码乱码问题(推荐)
May 02 Python
Python爬虫之网页图片抓取的方法
Jul 16 Python
Tensorflow 同时载入多个模型的实例讲解
Jul 27 Python
Python 最大概率法进行汉语切分的方法
Dec 14 Python
Python操作redis实例小结【String、Hash、List、Set等】
May 16 Python
详解Python3中setuptools、Pip安装教程
Jun 18 Python
Django Form 实时从数据库中获取数据的操作方法
Jul 25 Python
Python列表去重复项的N种方法(实例代码)
May 12 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
PHP实时显示输出
2008/10/02 PHP
浅析PHP安装扩展mcrypt以及相关依赖项(PHP安装PECL扩展的方法)
2013/07/05 PHP
浅析ThinkPHP缓存之快速缓存(F方法)和动态缓存(S方法)(日常整理)
2015/10/26 PHP
深入浅析安装PhpStorm并激活的步骤详解
2020/09/17 PHP
ExtJS 2.0 GridPanel基本表格简明教程
2010/05/25 Javascript
初学js插入节点appendChild insertBefore使用方法
2011/07/04 Javascript
javascript针对DOM的应用分析(三)
2012/04/15 Javascript
Js数组的操作push,pop,shift,unshift等方法详细介绍
2012/12/28 Javascript
jQuery.buildFragment使用方法及思路分析
2013/01/07 Javascript
javascript与jquery中跳出循环的区别总结
2013/11/04 Javascript
JavaScript中的数据类型转换方法小结
2015/10/26 Javascript
Chrome调试折腾记之JS断点调试技巧
2017/09/11 Javascript
解决vuecli3.0热更新失效的问题
2018/09/19 Javascript
angularJs中ng-model-options设置数据同步的方法
2018/09/30 Javascript
利用Vconsole和Fillder进行移动端抓包调试方法
2019/03/05 Javascript
微信小程序 bindtap 传参的实例代码
2020/02/21 Javascript
WebPack工具运行原理及入门教程
2020/12/02 Javascript
[54:06]OG vs TNC 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
浅谈django三种缓存模式的使用及注意点
2018/09/30 Python
Python使用字典的嵌套功能详解
2019/02/27 Python
django之状态保持-使用redis存储session的例子
2019/07/28 Python
Python如何调用外部系统命令
2019/08/07 Python
Python版中国省市经纬度
2020/02/11 Python
html5关于外链嵌入页面通信问题(postMessage解决跨域通信)
2020/07/20 HTML / CSS
香港草莓网:Strawberrynet香港
2019/05/10 全球购物
市场营销专科应届生求职信
2013/11/24 职场文书
我的求职择业计划书
2014/04/04 职场文书
租赁协议书范本
2014/04/22 职场文书
旅游饭店管理专业自荐书
2014/06/28 职场文书
会计人员演讲稿
2014/09/11 职场文书
副总经理岗位职责范本
2014/09/30 职场文书
2015年物业管理工作总结
2015/04/23 职场文书
2015年国庆节标语大全
2015/07/30 职场文书
2016年小学生迎国庆广播稿
2015/12/18 职场文书
JVM钩子函数的使用场景详解
2021/08/23 Java/Android
 Python 中 logging 模块使用详情
2022/03/03 Python