Python中模塊string.py詳解
一、用法
字符串常量:
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)
結(jié)果
abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
0123456789
0123456789abcdefABCDEF
01234567
!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&'()*+,-
./:;<=>?@[\]^_`{|}~
二、Template類:
其實(shí),Template類,可以和格式化字符串的用法還有字符串對象的format()方法做對比,可以幫助更好地理解。首先,新建一個(gè)python文件:string_template.py,
然后在里面寫入以下內(nèi)容:
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
結(jié)果
TEMPLATE:
Variable : foo
Escape : $
Variable in text: fooiable
INTERPOLATION:
Variable : foo
Escape : %
Variable in text: fooiable
FORMAT:
Variable : foo
Escape : {}
可以看到三者之間都可以起到對字符串里進(jìn)行格式化的效果。只是三者的修飾符不一樣。Template類好的一點(diǎn)就是其可以通過繼承類,實(shí)例化后自定義其修飾符,并且也可以對變量的名字格式進(jìn)行正則表達(dá)式的定義。
如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文件。里面定義了一個(gè)類MyTemplate,繼承了string的Template類,然后,對其兩個(gè)域進(jìn)行重載: Delimiter為修飾符,現(xiàn)在指定為了‘%',而不是之前的‘$'。 接著,idpattern是對變量的格式指定。
結(jié)果
$ python string_template_advanced.py Modified ID pattern: Delimiter : % Replaced : replaced Igonred : %notunderscored
為什么notunderscored沒有被替換呢?原因是我們在類定義的時(shí)候,idpattern里指定要出現(xiàn)下劃線'_', 而該變量名并沒有下劃線,故替代不了。
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
相關(guān)文章
Python把對應(yīng)格式的csv文件轉(zhuǎn)換成字典類型存儲腳本的方法
今天小編就為大家分享一篇Python把對應(yīng)格式的csv文件轉(zhuǎn)換成字典類型存儲腳本的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-02-02
基于pygame實(shí)現(xiàn)童年掌機(jī)打磚塊游戲
這篇文章主要為大家詳細(xì)介紹了基于pygame實(shí)現(xiàn)童年掌機(jī)打磚塊游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-02-02
Python高階函數(shù)與函數(shù)式編程概念及使用實(shí)例探究
這篇文章主要為大家介紹了Python高階函數(shù)與函數(shù)式編程概念及使用實(shí)例探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12
調(diào)整Jupyter notebook的啟動目錄操作
這篇文章主要介紹了調(diào)整Jupyter notebook的啟動目錄操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04
Django ORM判斷查詢結(jié)果是否為空,判斷django中的orm為空實(shí)例
這篇文章主要介紹了Django ORM判斷查詢結(jié)果是否為空,判斷django中的orm為空實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07

