python string库_《python标准库》--string

作用:包含处理文本的常量和类。

1、capwords():将一个字符串中所有单词的首字母大写。

1 >>> importstring2 >>> s = 'The quick brown fox jumped over the lazy dog.'

3 >>> prints4 The quick brown fox jumped over the lazy dog.5 >>> printstring.capwords(s)6 The Quick Brown Fox Jumped Over The Lazy Dog.7 >>>

2、maketrans():创建转换表,可以用例结合translate()方法将一组字符修改为另一组字符,这种做法比反复调用replace()更为高效。

1 >>> importstring2 >>> leet = string.maketrans('abegiloprstz','463611092572')3 >>> s = 'The quick brown fox jumped over the lazy dog'

4 >>> prints5 The quick brown fox jumped over the lazy dog6 >>> prints.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:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`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 importstring2

3 values = { 'var':'foo'}4

5 t = string.Template("""

6 Variable : $var7 Escape : $$8 Variable in text: ${var}iable9 """)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 intext: fooiable27

28 INTERPOLATION:29 Variable : foo30 Escape : %

31 Variable intest: fooiable32

33 >>>

可以看到,触发字符($或者%)都要写两次来完成转义。它们的重要区别是:模板不考虑参数类型。值会转换为字符串,再将字符串插入到结果中。这里没有提供

格式化选项。例如,没有办法控制使用几位有效数字来表示一个浮点数值。这有一个好处:通过使用safe_substitute()方法,可以避免未能提供模板所需全部参数值时可能产生的异常。

1 importstring2

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 exceptKeyError, 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 notprovided17 >>>

safe_substitute不产生异常

可以修改string.Template的默认语法,为此要调整它在模板体中查找变量名所使用的正则表达式模式。一种简单的做法是修改delimiter和idpattern类属性。

1 importstring2

3 template_text = '''

4 Delimiter : %%5 Replaced : %with_underscore6 Ignored : %notunderscored7 '''

8

9 d = { 'with_underscore':'replaced',10 'notunderscored':'not replaced',11 }12

13 classMyTemplate(string.Template):14 delimiter = '%'

15 idpattern = '[a-z]+_[a-z]+'

16

17 t =MyTemplate(template_text)18 print 'Modified ID pattern:'

19 printt.safe_substitute(d)20 >>> ================================ RESTART ================================

21 >>>

22 Modified ID pattern:23

24 Delimiter : %

25 Replaced : replaced26 Ignored : %notunderscored27

28 >>>

修改定界符和匹配模式

要完成更复杂的修改,可以覆盖pattern属性,定义一个全新的正则表达式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值