《python标准库》--string

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

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

1 >>> import string
2 >>> s = ‘The quick brown fox jumped over the lazy dog.‘
3 >>> print s
4 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 string
2 >>> leet = string.maketrans(‘abegiloprstz‘,‘463611092572‘)
3 >>> s = ‘The quick brown fox jumped over the lazy dog‘
4 >>> print s
5 The quick brown fox jumped over the lazy dog
6 >>> 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 >>> leet
2 ‘\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)s
15 Escape          : %%
16 Variable in test: %(var)siable
17 """
18
19 print ‘INTERPOLATION:‘, s % values
20
21 >>> ================================ RESTART ================================
22 >>>
23 TEMPLATE:
24 Variable        : foo
25 Escape          : $
26 Variable in text: fooiable
27
28 INTERPOLATION:
29 Variable        : foo
30 Escape          : %
31 Variable in test: fooiable
32
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 provided
17 >>> 

safe_substitute不产生异常

可以修改string.Template的默认语法,为此要调整它在模板体中查找变量名所使用的正则表达式模式。一种简单的做法是修改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  : replaced
26   Ignored   : %notunderscored
27
28 >>> 

修改定界符和匹配模式

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

时间: 2024-10-04 07:49:47

《python标准库》--string的相关文章

Python标准库--string模块

string中包含了处理文本的常量和模板 常量 print(string.whitespace) 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.print

一、Python的标准库String

一.Python的标准库String 1.查看武器 a. help(type()) name = "jane"print(help(type(name))) b. capitalize() name = "jane" print(name.capitalize()) 效果:Jane c. center() name = "jane" print(name.center(50, '-')) 效果:-----------------------jan

[python标准库]XML模块

1.什么是XML XML是可扩展标记语言(Extensible Markup Language)的缩写,其中的 标记(markup)是关键部分.您可以创建内容,然后使用限定标记标记它,从而使每个单词.短语或块成为可识别.可分类的信息. XML有以下几个特点. XML的设计宗旨是传输数据,而非显示数据. XML标签没有被预定义.您需要自行定义标签. XML被设计为具有自我描述性. XML是W3C的推荐标准. 其解析流程如下图: 2.常用解析XML的Python包 Python的标准库中,提供了6种

[学习笔记] Python标准库简明教程 [转]

1 操作系统接口 os 模块提供了一系列与系统交互的模块: >>> os.getcwd() # Return the current working directory '/home/minix/Documents/Note/Programming/python/lib1' >>> os.chdir('~/python') # Change current working directory Traceback (most recent call last): File

Python标准库——走马观花

Python标准库——走马观花 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! Python有一套很有用的标准库(standard library).标准库会随着Python解释器,一起安装在你的电脑中的.它是Python的一个组成部分.这些标准库是Python为你准备好的利器,可以让编程事半功倍. 我将根据我个人的使用经验中,挑选出标准库三个方面的包(package)介绍: Python增强 系统互动 网络 第一类:Pyth

Python标准库概览

Python标准库通常被称为"自带的电池",自然地提供了广泛的功能,涵盖了大概200个左右的包与模块.不断有高质量的包或模块被开发出来,极大的丰富了标准库.但有些模块放在标准库中很难去维护,比如"Berkeley DB"模块,其被清理出标准库进行单独维护.还有一些库,比如PyParsing(创建分析器)也是没有被加在标准库中. 1 字符串处理 1.1 String模块 常量:string.ascii_letters. string.hexdigits. string

【python标准库学习】re模块

1.什么是re 正则表达式一门相对通用的语言,在python中也有对正则表达式的支持,那就是的内置re模块.正则表达式就是一系列的规则去匹配字符串然后进行相应的操作,这些规则网上一搜一大片,而re则是运用正则表达式来提供一系列的功能强大的接口让我们来调用.通常我们在对日志文件进行操作的时候会对正则表达式运用的比较多来得到我们希望得到的数据. 2.python中的转义符 正则表达式中通常用反斜杠'\'来代表转义,'\d'代表数字等,但是python本身也是通过反斜杠'\'来表示转义,所以就和正则表

Python 标准库 BaseHTTPServer 中文翻译

Python 标准库 BaseHTTPServer 中文翻译. 注意: BaseHTTPServer模块在Python3中已被合并到http.server,当转换你的资源为 Python3 时 2to3 工具将自己主动适配导入. 源代码:Lib/BaseHTTPServer.py 此模块定义了两个类用于实现HTTP服务器(Web servers).通常,此模块不被直接使用.可是它用来作为基类创建功能性的Web servers. 查看 SimpleHTTPServer 和 CGIHTTPServe

python标准库之字符编码详解

codesc官方地址:https://docs.python.org/2/library/codecs.html 相关帮助:http://www.cnblogs.com/huxi/archive/2010/12/05/1897271.html #python标准库(英文地址:)http://www.ask3.cn/ebook/docspy3zh/library/index.html unicode入门: cpython2.xz支持2种类型字符串处理文本数据,老式的str实例使用单个8位字节表示字

Python标准库(机器汉化)

Python标准库 虽然"Python语言参考"描述了Python语言的确切语法和语义,但该库参考手册描述了使用Python分发的标准库.它还介绍了Python发行版中通常包含的一些可选组件. Python的标准库非常广泛,提供了下面列出的长表所示的各种设施.该库包含内置模块(用C语言编写),提供对Python程序员无法访问的系统功能(如文件I / O)的访问,以及使用Python编写的模块,为出现的许多问题提供标准化的解决方案日常编程.其中一些模块是明确设计的,通过将特定平台抽象为平