Python3.2官方文档翻译-标准库概览(二)

7.5 字符串模式匹配

re模块为高级字符串成处理提供了正则表达式匹配。 对于复杂的匹配和处理,正则表达式能够提供简明优化的方法:

>>> import re

>>> re.findall(r’\bf[a-z]*’, ’which foot or hand fell fastest’)

[’foot’, ’fell’, ’fastest’]

>>> re.sub(r’(\b[a-z]+) \1’, r’\1’, ’cat in the the hat’)

’cat in the hat’

当仅仅需要一些简单的功能时候,优先使用string方法,因为它更容易读取和调试。

>>> ’tea for too’.replace(’too’, ’two’)

’tea for two’

7.6 数学

数学模块为浮点数运算提供了对底层C函数库的访问支持。

>>> import math

>>> math.cos(math.pi / 4)

0.70710678118654757

>>> math.log(1024, 2)

10.0

Random模块为生成随机选择提供了工具。

>>> import random

>>> random.choice([’apple’, ’pear’, ’banana’])

’apple’

>>> random.sample(range(100), 10) # sampling without replacement

[30, 83, 16, 4, 8, 81, 41, 50, 18, 33]

>>> random.random() # random float

0.17970987693706186

>>> random.randrange(6) # random integer chosen from range(6)

4

SciPy project<https://sicpy.org> 项目中包含许多数据计算的模块。

10.7 互联网访问

Python中有许多访问互联网和处理互联网协议的模块。其中最简单的两个就是从链接中获得数据的urllib.request和发送邮件的smtplib.

>>> from urllib.request import urlopen

>>> for line in urlopen(’http://tycho.usno.navy.mil/cgi-bin/timer.pl’):

... line = line.decode(’utf-8’) # Decoding the binary data to text.

... if ’EST’ in line or ’EDT’ in line: # look for Eastern Time

... print(line)

<BR>Nov. 25, 09:43:32 PM EST

>>> import smtplib

>>> server = smtplib.SMTP(’localhost’)

>>> server.sendmail(’[email protected]’, ’[email protected]’,

... """To: [email protected]

... From: [email protected]

...

... Beware the Ides of March.

... """)

>>> server.quit()

(注意第二个例子需要有一个在本地运行的email邮箱服务器)

7.8 时间和日期

Datatime模块提供一些用简单或复杂方式处理时间和日期的类。当处理日期和时间数据时,格式化输出和处理实现的重点就是高校的成员提取。这个模块同样支持时区处理。

>>> # dates are easily constructed and formatted

>>> from datetime import date

>>> now = date.today()

>>> now

datetime.date(2003, 12, 2)

>>> now.strftime("%m-%d-%y. %d %b %Y is a %A on the %d day of %B.")

’12-02-03. 02 Dec 2003 is a Tuesday on the 02 day of December.’

>>> # dates support calendar arithmetic

>>> birthday = date(1964, 7, 31)

>>> age = now - birthday

>>> age.days

14368

7.9 数据压缩

Python还支持常用数据的打包和压缩。主要涉及到的模块式zlib,gzip, bz2,zipfile and tarfile.

>>> import zlib

>>> s = b’witch which has which witches wrist watch’

>>> len(s)

41

>>> t = zlib.compress(s)

>>> len(t)

37

>>> zlib.decompress(t)

b’witch which has which witches wrist watch’

>>> zlib.crc32(s)

226805979

7.10 性能评测

一些python使用者对于同一问题的不同解决办法的性能很感兴趣。Python提供了一种评测工具就可以马上回答这些问题。

例如, 当封装参数的时候可以用元组封装和拆封特性来代替传统的方法。Timeit模块中可以迅速描述一个性能优势。

>>> from timeit import Timer

>>> Timer(’t=a; a=b; b=t’, ’a=1; b=2’).timeit()

0.57535828626024577

>>> Timer(’a,b = b,a’, ’a=1; b=2’).timeit()

0.54962537085770791

与timeit的细粒度相比,profile和pstate模块提供了在大代码块中识别时间临界区的工具。

6.11 质量控制

开发高质量的软件的方法之一就是对每个功能写测试用例。在开发过程中频繁地运行这些用例。

Doctest模块提供一个扫描模块和验证嵌套在程序文档字符中的测试。测试编制是简单的把一个典型的调用及它的结果剪切并粘贴到文档字符串里。这通过为用户提供一个实例改善了文档,并且它允许doctext模块确认代码和文档相符。

Unittest模块不像doctest模块那么容易使用。但是,它允许一个更加复杂的测试来维护分开文件。

7.11 内置电池

Python有“内置电池”的哲学,因为可以很好看到通过更大包扩展更加复杂和健壮的性能。例如:

l Xmlrpc.client和xmlrpc.server模块可以实现远程程序调用。尽管模块有这样的名字,用户无需拥有xml的知识或处理xml.

l Email包是一个管理邮件消息的库。包含MIME和其他rfc2822-base消息文档。不像真正收发消息的smtplib和poplib模块,email包有完整的工具,来编译和编码复杂的消息结构(包括附件)。或处理互联网编码和消息头协议。

l Xml.dom和xml.sax包对编译大型数据交互格式提供了非常健全的支持。同样,csv模块支持从一种通用的数据库格式中直接读写。总之,这些模块和包大大简化了python应用程序和其他工具之间的数据交换。

有若干模块可以实现国际化,包括gettext,local和codecs包。

Python3.2官方文档翻译-标准库概览(二),布布扣,bubuko.com

时间: 2024-10-09 23:09:36

Python3.2官方文档翻译-标准库概览(二)的相关文章

Python3.2官方文档翻译--标准库概览(一)

7.1 操作系统接口 Os模块提供主要许多与操作系统交互的函数. >>> import os >>> os.getcwd() # Return the current working directory 'C:\\Python31' >>> os.chdir('/server/accesslogs') # Change current working directory >>> os.system('mkdir today') # R

Python3.2官方文档翻译--输出格式化

第八章 标准库二 第二部分涵盖了许多更能满足专业开发人员需求的高级模块.这些模块在小脚本中很少出现. 8.1 输出格式化 Reprlib模块为大型的或深度嵌套的容器缩写显示提供了repr()函数的一个定制版本. >>> import reprlib >>> reprlib.repr(set('supercalifragilisticexpialidocious')) "set(['a', 'c', 'd', 'e', 'f', 'g', ...])"

Python3.2官方文档翻译--继承

6.5 继承 当然,一门语言特性如果不支持继承那么名称类就失去了价值.子类继承父类的方法如下: class DerivedClassName(BaseClassName): <statement-1> . . . <statement-N> 名称BaseClassName必须定义在一个包含派生类定义的作用域中.在基类名称的位置上,其他随意表达式都是允许的.例如,当基类定义在其他模块中,这也是可用的. class DerivedClassName(modname.BaseClassN

Python3.2官方文档翻译--模板

8.2 模板 String模块包含一个用途广泛的类,此类为最终用户的编辑提供了简单的语法支持.这让用户不修改应用程序的前提下实现他们应用程序的定制. 这种格式使用$加有效的python标识符(数字.字母和下划线)形式的占位符名称.通过在占位符两侧使用大括号便可以不用空格分隔在其后面跟随更多的字母和数字字符.使用$$来创建一个单独$转码字符. >>> from string import Template >>> t = Template('${village}folk 

Python3.2官方文档翻译--使用二进制数据记录布局和多线程

题目描述 有n张卡片,分别标有数字1~n.有一天Silence把他们按某种序列排好,然后从第一张开始取出一张,再拿一张放到最后面,再取出一张,再拿出一张放到最后面...知道n张卡片全部取走.把取出的卡片按取出的顺序排好,正好是1,2,3,4,....,n. 现在,告诉你n,Silence希望你帮他计算原来的序列的逆序数. 例如,n=4时,原来的序列应该是1,3,2,4.这样,先取出卡片1,再把卡片3放到最后面,序列变成了2,4,3.再把2取出来,4放到后面,序列变成了3,4.再把3取出来,4放最

Python3.2官方文档翻译-列表工具和十进制浮点数计算

Disk Schedule Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 2368    Accepted Submission(s): 333 Problem Description 有很多从磁盘读取数据的需求,包括顺序读取.随机读取.为了提高效率,需要人为安排磁盘读取.然而,在现实中,这种做法很复杂.我们考虑一个相对简单的场景.磁

Python3.2官方文档翻译---类一些说明

6.4 一些说明 数据属性可以重写同名的方法属性.这是为了避免在大型系统中产生问题的意外名称冲突.所以用一些减少冲突的常用方法是很有效果的.常用的方法包括:大写字母方法名称,用唯一的字符串来做为数据属性的名称(可以是个下划线_)或者用动词命名方法和用名字命名数据属性. 数据属性就像和对象的普通用户一样可以被方法引用.换句话说,类不能用来实现纯净的数据类型.事实上,在python中不能强制数据隐藏,一切基于约定.(另一方面,如C中写的,python的实现可以做到完全隐藏实现细节并且在必要是可以控制

Python3.2官方文档翻译--类备注和异常也是类

6.7备注 有时有个像Pasca中"记录"和C中"数据体"的数据类型非常有用.集合一些数据项.一个空类定义可以清楚地显示: class Employee: pass john = Employee() # Create an empty employee record # Fill the fields of the record john.name = 'John Doe' john.dept = 'computer lab' john.salary = 1000

Python3.2官方文档翻译-多重继承和私有变量

6.5.1 多重继承 Python也支持多种继承形式.一个能继承多个基类的类定义如下: class DerivedClassName(Base1, Base2, Base3): <statement-1> . . . <statement-N> 大多数情况,最简单而言,你可以把从父类继承下来的属性查询看成是遵循深度优先,从左到右. 而不是在同一等级重复的同样类中执行两次.因此,如果一个属性没在派生类中找到,首先会在base1然后再base1的基类中,如果在那里都没发现,就会在bas