《python標準庫》--string

來源:互聯網
上載者:User

標籤:

作用:包含處理文本的常量和類。

1、capwords():將一個字串中所有單詞的首字母大寫。

1 >>> import string2 >>> s = ‘The quick brown fox jumped over the lazy dog.‘3 >>> print s4 The quick brown fox jumped over the lazy dog.5 >>> print string.capwords(s)6 The Quick Brown Fox Jumped Over The Lazy Dog.7 >>>

2、maketrans():建立轉換表,可以用例結合translate()方法將一組字元修改為另一組字元,這種做法比反覆調用replace()更為高效。

1 >>> import string2 >>> leet = string.maketrans(‘abegiloprstz‘,‘463611092572‘)3 >>> s = ‘The quick brown fox jumped over the lazy dog‘4 >>> print s5 The quick brown fox jumped over the lazy dog6 >>> print s.translate(leet)7 Th3 qu1ck 620wn f0x jum93d 0v32 7h3 142y d06

   如果反過來,我們是得不到原來的句子的,因為前面的數字字串‘463611092572’有重複的數字字元,替換的時候它們會被替換成最後一個數字對於的字元,

如6會被替換成‘g’而不是‘b’

1 >>> leet = string.maketrans(‘463611092572‘,‘abegiloprstz‘)2 >>> t = ‘Th3 qu1ck 620wn f0x jum93d 0v32 7h3 142y d06‘3 >>> t.translate(leet)4 ‘The qulck gzown fox jumped ovez the lazy dog‘

我們再來看看這個‘leet’是什嗎?看起來是ascll字元集,而且其中的數字0-9中的部分數字已經按照上面的對應關係被替換成字母了。所以翻譯的時候,數字就會

被翻譯成對應的字元。

1 >>> leet2 ‘\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !"#$%&\‘()*+,-./olzeasgt8p:;<=>[email protected][\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff‘

模板

下面的例子對一個簡單的模板和一個使用%操作符的類似字串拼接進行了比較。

 1 import string 2  3 values = { ‘var‘:‘foo‘} 4  5 t = string.Template(""" 6 Variable        : $var 7 Escape          : $$ 8 Variable in text: ${var}iable 9 """)10 11 print  ‘TEMPLATE:‘, t.substitute(values)12 13 s = """14 Variable        : %(var)s15 Escape          : %%16 Variable in test: %(var)siable17 """18 19 print ‘INTERPOLATION:‘, s % values20 21 >>> ================================ RESTART ================================22 >>> 23 TEMPLATE: 24 Variable        : foo25 Escape          : $26 Variable in text: fooiable27 28 INTERPOLATION: 29 Variable        : foo30 Escape          : %31 Variable in test: fooiable32 33 >>>

可以看到,觸發字元($或者%)都要寫兩次來完成轉義。它們的重要區別是:模板不考慮參數類型。值會轉換為字串,再將字串插入到結果中。這裡沒有提供

格式化選項。例如,沒有辦法控制使用幾位有效數字來表示一個浮點數值。這有一個好處:通過使用safe_substitute()方法,可以避免未能提供模板所需全部參數值時可能產生的異常。

 1 import string 2  3 values = { ‘var‘:‘foo‘} 4  5 t = string.Template("$var is here but $missing is not provided") 6 try: 7     print ‘substitute()   :‘, t.substitute(values) 8 except KeyError, err: 9     print ‘ERROR:‘,str(err)10 11 print ‘safe_substitute():‘, t.safe_substitute(values)12 13 >>> ================================ RESTART ================================14 >>> 15 substitute()   : ERROR: ‘missing‘16 safe_substitute(): foo is here but $missing is not provided17 >>> 
safe_substitute不產生異常

 可以修改string.Template的預設文法,為此要調整它在模板體中尋找變數名所使用的Regex模式。一種簡單的做法是修改delimiter和idpattern類屬性。

 1 import string 2  3 template_text = ‘‘‘ 4   Delimiter : %% 5   Replaced  : %with_underscore 6   Ignored   : %notunderscored 7 ‘‘‘ 8  9 d = { ‘with_underscore‘:‘replaced‘,10       ‘notunderscored‘:‘not replaced‘,11       }12 13 class MyTemplate(string.Template):14     delimiter = ‘%‘15     idpattern = ‘[a-z]+_[a-z]+‘16 17 t = MyTemplate(template_text)18 print ‘Modified ID pattern:‘19 print t.safe_substitute(d)20 >>> ================================ RESTART ================================21 >>> 22 Modified ID pattern:23 24   Delimiter : %25   Replaced  : replaced26   Ignored   : %notunderscored27 28 >>> 
修改定界符和匹配模式

要完成更複雜的修改,可以覆蓋pattern屬性,定義一個全新的Regex。

《python標準庫》--string

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.