Python中模块string.py详解

作者:Brad1994 时间:2021-05-20 05:25:03 

一、用法

字符串常量:


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,string.py
0
投稿

猜你喜欢

  • Python API 操作Hadoop hdfs详解

    2023-02-24 02:23:26
  • 浅谈node的事件机制

    2024-05-05 09:22:03
  • 缓存是如何实现的?

    2009-11-01 15:35:00
  • Python编程实现二叉树及七种遍历方法详解

    2022-10-31 13:28:28
  • vuex中...mapstate和...mapgetters的区别及说明

    2023-07-02 16:33:53
  • Vue3中setup方法的用法详解

    2023-07-02 16:56:19
  • 页面加载对访问的影响

    2009-10-30 18:54:00
  • Python 统计位数为偶数的数字代码详解

    2023-12-05 19:43:03
  • 利用Python如何实现一个小说网站雏形

    2023-09-22 05:52:07
  • python cookie反爬处理的实现

    2021-10-16 23:33:17
  • django模型查询操作的实现

    2023-03-31 04:01:04
  • Python使用requests发送POST请求实例代码

    2022-10-26 07:40:00
  • 基于DATAFRAME中元素的读取与修改方法

    2021-11-18 03:59:09
  • Python使用requests及BeautifulSoup构建爬虫实例代码

    2021-08-13 11:33:13
  • python禁用键鼠与提权代码实例

    2022-12-11 11:54:59
  • Pytest+Yaml+Excel 接口自动化测试框架的实现示例

    2023-01-07 05:48:17
  • 文案是网站的性格

    2009-09-02 13:05:00
  • Pygame的程序开始示例代码

    2021-12-20 19:45:01
  • Golang 操作TSV文件的实战示例

    2023-07-18 06:46:01
  • django-rest-framework解析请求参数过程详解

    2023-03-26 18:18:00
  • asp之家 网络编程 m.aspxhome.com