Python中模块string.py详解
一、用法
字符串常量:
importstring 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,
然后在里面写入以下内容:
importstring
values={'var':'foo'}
t=string.Template("""
Variable:$var
Escape:$$
Variableintext:${var}iable
""")
print('TEMPLATE:',t.substitute(values))
s="""
Variable:%(var)s
Escape:%%
Variableintext:%(var)siable
"""
print('INTERPOLATION:',s%values)
s="""
Variable:{var}
Escape:{{}}
Variableintext:{var}iable
"""
print('FORMAT:',s.format(**values))
然后,在python命令行中输入:
$pythonstring_template.py
结果
TEMPLATE:
Variable:foo
Escape:$
Variableintext:fooiable
INTERPOLATION:
Variable:foo
Escape:%
Variableintext:fooiable
FORMAT:
Variable:foo
Escape:{}
可以看到三者之间都可以起到对字符串里进行格式化的效果。只是三者的修饰符不一样。Template类好的一点就是其可以通过继承类,实例化后自定义其修饰符,并且也可以对变量的名字格式进行正则表达式的定义。
如string_template_advanced.py示例:
importstring
classMyTemplate(string.Template):
delimiter='%'
idpattern='[a-z]+_[a-z]+'
template_text='''
Delimiter:%%
Replaced:%with_underscore
Igonred:%notunderscored
'''
d={
'with_underscore':'replaced',
'notunderscored':'notreplaced',
}
t=MyTemplate(template_text)
print('ModifiedIDpattern:')
print(t.safe_substitute(d))
首先,解释下上面python文件。里面定义了一个类MyTemplate,继承了string的Template类,然后,对其两个域进行重载:Delimiter为修饰符,现在指定为了‘%',而不是之前的‘$'。接着,idpattern是对变量的格式指定。
结果
$pythonstring_template_advanced.py ModifiedIDpattern: Delimiter:% Replaced:replaced Igonred:%notunderscored
为什么notunderscored没有被替换呢?原因是我们在类定义的时候,idpattern里指定要出现下划线'_',而该变量名并没有下划线,故替代不了。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对毛票票的支持。