Python正则表达式模块re讲解

Python正则表达式模块re讲解
Python正则表达式模块re讲解

2 re模块的基本函数

在上面的说明中,我们已经对re模块的基本函数‘findall’很熟悉了。当然如果光有findall 的话,很多功能是不能实现的。下面开始介绍一下re模块其它的常用基本函数。灵活搭配使用这些函数,才能充分发挥Python正则式的强大功能。

首先还是说下老熟人findall函数吧

findall(rule , target [,flag] )

在目标字符串中查找符合规则的字符串。

第一个参数是规则,第二个参数是目标字符串,后面还可以跟一个规则选项(选项功能将在compile函数的说明中详细说明)。

返回结果结果是一个列表,中间存放的是符合规则的字符串。如果没有符合规则的字符串被找到,就返回一个空列表。

2.1使用compile加速

compile( rule [,flag] )

将正则规则编译成一个Pattern对象,以供接下来使用。

第一个参数是规则式,第二个参数是规则选项。

返回一个Pattern对象

直接使用findall ( rule , target )的方式来匹配字符串,一次两次没什么,如果是多次使用的话,由于正则引擎每次都要把规则解释一遍,而规则的解释又是相当费时间的,所以这样的效率就很低了。如果要多次使用同一规则来进行匹配的话,可以使用https://www.360docs.net/doc/c96021401.html,pile函数来将规则预编译,使用编译过返回的Regular Expression Object或叫做Pattern对象来进行查找。

>>> s='111,222,aaa,bbb,ccc333,444ddd'

>>> rule=r’\b\d+\b’

>>> compiled_rule=https://www.360docs.net/doc/c96021401.html,pile(rule)

>>> compiled_rule.findall(s)

['111', '222']

可见使用compile过的规则使用和未编译的使用很相似。compile函数还可以指定一些规则标志,来指定一些特殊选项。多个选项之间用’|’(位或)连接起来。

I IGNORECASE忽略大小写区别。

L LOCAL字符集本地化。这个功能是为了支持多语言版本的字符集使用环境的,比如在转义符\w,在英文环境下,它代表[a-zA-Z0-9],即所以英文字符和数字。如果在一个法语环境下使用,缺省设置下,不能匹配"é"或"?"。加上这L选项和就可以匹配了。不过这个对于中文环境似乎没有什么用,它仍然不能匹配中文字符。

M MULTILINE多行匹配。在这个模式下’^’(代表字符串开头)和’$’(代表字符串结尾)将能够匹配多行的情况,成为行首和行尾标记。比如

>>> s=’123 456\n789 012\n345678’

>>> rc=https://www.360docs.net/doc/c96021401.html,pile(r’^\d+’)#匹配一个位于开头的数字,没有使用M选项

>>> rc.findall(s)

['123']#结果只能找到位于第一个行首的’123’

>>> rcm=https://www.360docs.net/doc/c96021401.html,pile(r’^\d+’,re.M)#使用M选项

>>> rcm.findall(s)

['123', '789', '345']#找到了三个行首的数字

同样,对于’$’来说,没有使用M选项,它将匹配最后一个行尾的数字,即’678’,加上以后,就能匹配三个行尾的数字456 012和678了.

>>> rc=https://www.360docs.net/doc/c96021401.html,pile(r’\d+$’)

>>> rcm=https://www.360docs.net/doc/c96021401.html,pile(r’\d+$’,re.M)

>>> rc.findall(s)

['678']

>>> rcm.findall(s)

['456', '012', '678']

S DOTALL‘.’号将匹配所有的字符。缺省情况下’.’匹配除换行符’\n’外的所有字符,使用这一选项以后,’.’就能匹配包括’\n’的任何字符了。

U UNICODE\w,\W,\b,\B,\d,\D,\s和\S都将使用Unicode。

X VERBOSE这个选项忽略规则表达式中的空白,并允许使用’#’来引导一个注释。这样可以让你把规则写得更美观些。比如你可以把规则

>>> rc = https://www.360docs.net/doc/c96021401.html,pile(r"\d+|[a-zA-Z]+") #匹配一个数字或者单词

使用X选项写成:

>>> rc = https://www.360docs.net/doc/c96021401.html,pile(r""" # start a rule

\d+ # number

| [a-zA-Z]+ # word

""", re.VERBOSE)

在这个模式下,如果你想匹配一个空格,你必须用'\ '的形式('\'后面跟一个空格)

2.2 match与search

match( rule , targetString [,flag] )

search( rule , targetString [,flag] )

(注:re的match与search函数同compile过的Pattern对象的match与search函数的参数是不一样的。Pattern对象的match与search函数更为强大,是真正最常用的函数)按照规则在目标字符串中进行匹配。

第一个参数是正则规则,第二个是目标字符串,第三个是选项(同compile函数的选项)返回:若成功返回一个Match对象,失败无返回

findall虽然很直观,但是在进行更复杂的操作时,就有些力不从心了。此时更多的使用的是match和search函数。他们的参数和findall是一样的,都是:

match( rule , targetString [,flag] )

search( rule , targetString [,flag] )

不过它们的返回不是一个简单的字符串列表,而是一个MatchObject(如果匹配成功的话).。通过操作这个matchObject,我们可以得到更多的信息。

需要注意的是,如果匹配不成功,它们则返回一个NoneType。所以在对匹配完的结果进行操作之前,你必需先判断一下是否匹配成功了,比如:

>>> m=re.match( rule , target )

>>> if m:#必需先判断是否成功

doSomethin

这两个函数唯一的区别是:match从字符串的开头开始匹配,如果开头位置没有匹配成功,就算失败了;而search会跳过开头,继续向后寻找是否有匹配的字符串。针对不同的需要,可以灵活使用这两个函数。

关于match返回的MatchObject如果使用的问题,是Python正则式的精髓所在,它与组的使用密切相关。我将在下一部分详细讲解,这里只举个最简单的例子:

例:

>>> s= 'Tom:9527 , Sharry:0003'

>>> m=re.match( r'(?P\w+):(?P\d+)' , s )

>>> m.group()

'Tom:9527'

>>> m.groups()

('Tom', '9527')

>>> m.group(‘name’)

'Tom'

>>> m.group(‘num’)

'9527'

2.3 finditer

finditer( rule , target [,flag] )

参数同findall

返回一个迭代器

finditer函数和findall函数的区别是,findall返回所有匹配的字符串,并存为一个列表,而finditer则并不直接返回这些字符串,而是返回一个迭代器。关于迭代器,解释起来有点复杂,还是看看例子把:

>>> s=’111 222 333444’

>>> for i in re.finditer(r’\d+’ , s ):

print i.group(),i.span()#打印每次得到的字符串和起始结束位置结果是

111 (0, 3)

222 (4, 7)

333 (8, 11)

444 (12, 15)

简单的说吧,就是finditer返回了一个可调用的对象,使用for i in finditer()的形式,可以一个一个的得到匹配返回的Match对象。这在对每次返回的对象进行比较复杂的操作时比较有用。

2.4字符串的替换和修改

re模块还提供了对字符串的替换和修改函数,他们比字符串对象提供的函数功能要强大一些。这几个函数是

sub ( rule , replace , target [,count] )

subn(rule , replace , target [,count] )

在目标字符串中规格规则查找匹配的字符串,再把它们替换成指定的字符串。你可以指定一个最多替换次数,否则将替换所有的匹配到的字符串。

第一个参数是正则规则,第二个参数是指定的用来替换的字符串,第三个参数是目标字符串,第四个参数是最多替换次数。

这两个函数的唯一区别是返回值。

sub返回一个被替换的字符串

sub返回一个元组,第一个元素是被替换的字符串,第二个元素是一个数字,表明产生了多少次替换。

例,将下面字符串中的’dog’全部替换成’cat’

>>> s=’ I have a dog , you have a dog , he have a dog ‘

>>> re.sub( r’dog’ , ‘cat’ , s )

' I have a cat , you have a cat , he have a cat '

如果我们只想替换前面两个,则

>>> re.sub( r’dog’ , ‘cat’ , s , 2 )

' I have a cat , you have a cat , he have a dog '

或者我们想知道发生了多少次替换,则可以使用subn

>>> re.subn( r’dog’ , ‘cat’ , s )

(' I have a cat , you have a cat , he have a cat ', 3)

split( rule , target [,maxsplit] )

切片函数。使用指定的正则规则在目标字符串中查找匹配的字符串,用它们作为分界,把字符串切片。

第一个参数是正则规则,第二个参数是目标字符串,第三个参数是最多切片次数

返回一个被切完的子字符串的列表

这个函数和str对象提供的split函数很相似。举个例子,我们想把上例中的字符串被’,’分割开,同时要去掉逗号前后的空格

>>> s=’ I have a dog,you have a dog,he have a dog ‘

>>> re.split( ‘\s*,\s*’ , s )

[' I have a dog', 'you have a dog', 'he have a dog ']

结果很好。如果使用str对象的split函数,则由于我们不知道’,’两边会有多少个空格,而不得不对结果再进行一次处理。

escape( string )

这是个功能比较古怪的函数,它的作用是将字符串中的non-alphanumerics字符(我已不知道该怎么翻译比较好了)用反义字符的形式显示出来。有时候你可能希望在正则式中匹配一个字符串,不过里面含有很多re使用的符号,你要一个一个的修改写法实在有点麻烦,你可以使用这个函数,

例在目标字符串s中匹配’(*+?)’这个子字符串

>>> s= ‘111 222 (*+?)333’

>>> rule= re.escape( r’(*+?)’ )

>>> print rule

\(\*\+\?\)

>>> re.findall( rule , s )

['(*+?)']

3更深入的了解re的组与对象

前面对Python正则式的组进行了一些简单的介绍,由于还没有介绍到match对象,而组又是和match对象密切相关的,所以必须将它们结合起来介绍才能充分地说明它们的用途。

不过再详细介绍它们之前,我觉得有必要先介绍一下将规则编译后的生成的patter对象

3.1编译后的Pattern对象

将一个正则式,使用compile函数编译,不仅是为了提高匹配的速度,同时还能使用一些附加的功能。编译后的结果生成一个Pattern对象,这个对象里面有很多函数,他们看起来和re 模块的函数非常象,它同样有findall , match , search ,finditer , sub , subn , split这些函数,只不过它们的参数有些小小的不同。一般说来,re模块函数的第一个参数,即正则规则不再需要了,应为规则就包含在Pattern对象中了,编译选项也不再需要了,因为已经被编译过了。因此re模块中函数的这两个参数的位置,就被后面的参数取代了。

findall , match , search和finditer这几个函数的参数是一样的,除了少了规则和选项两个参数外,它们又加入了另外两个参数,它们是:查找开始位置和查找结束位置,也就是说,现在你可以指定查找的区间,除去你不感兴趣的区间。它们现在的参数形式是:

findall ( targetString [, startPos [,endPos] ] )

finditer ( targetString [, startPos [,endPos] ] )

match ( targetString [, startPos [,endPos] ] )

search ( targetString [, startPos [,endPos] ] )

这些函数的使用和re模块的同名函数使用完全一样。所以就不多介绍了。

除了和re模块的函数同样的函数外,Pattern对象还多了些东西,它们是:

flags查询编译时的选项

pattern查询编译时的规则

groupindex规则里的组

这几个不是函数,而是一个值。它们提供你一些规则的信息。比如下面这个例子

>>>

p=https://www.360docs.net/doc/c96021401.html,pile( r'(?P\b[a-z]+\b)|(?P\b\d+\b)|(?P\b[a-z_]+\w*\b)' , re.I )

>>> p.flags

2

>>> p.pattern

'(?P\\b[a-z]+\\b)|(?P\\b\\d+\\b)|(?P\\b[a-z_]+\\w*\\b)'

>>> p.groupindex

{'num': 2, 'word': 1, 'id': 3}

我们来分析一下这个例子:这个正则式是匹配单词、或数字、或一个由字母或’_’开头,后面接字母或数字的一个ID。我们给这三种情况的规则都包入了一个命名组,分别命名为’word’ , ‘num’和‘id’。我们规定大小写不敏感,所以使用了编译选项‘I’。

编译以后返回的对象为p,通过p.flag我们可以查看编译时的选项,不过它显示的不是’I’,而是一个数值2。其实re.I是一个整数,2就是它的值。我们可以查看一下:>>> re.I

2

>>> re.L

4

>>> re.M

8

每个选项都是一个数值。

通过p.pattern可以查看被编译的规则是什么。使用print的话会更好看一些

>>> print p.pattern

(?P\b[a-z]+\b)|(?P\b\d+\b)|(?P\b[a-z_]+\w*\b)

看,和我们输入的一样。

接下来的p.groupindex则是一个字典,它包含了规则中的所有命名组。字典的key是名字,values是组的序号。由于字典是以名字作为key,所以一个无命名的组不会出现在这里。

3.2组与Match对象

组与Match对象是Python正则式的重点。只有掌握了组和Match对象的使用,才算是真正学会了Python正则式。

3.2.1组的名字与序号

正则式中的每个组都有一个序号,它是按定义时从左到右的顺序从1开始编号的。其实,re 的正则式还有一个0号组,它就是整个正则式本身。

我们来看个例子

>>> p=https://www.360docs.net/doc/c96021401.html,pile( r’(?P[a-z]+)\s+(?P\d+)\s+(?P\d+).*’ , re.I ) >>> p.groupindex

{'age': 2, 'tel': 3, 'name': 1}

>>> s=’Tom 24 88888888<=’

>>> m=p.search(s)

>>> m.groups()#看看匹配的各组的情况

('Tom', '24', '8888888')

>>> m.group(‘name’)#使用组名获取匹配的字符串

‘Tom’

>>> m.group( 1 )#使用组序号获取匹配的字符串,同使用组名的效果一样>>> m.group(0)# 0组里面是什么呢?

'Tom 24 88888888<='

原来0组就是整个正则式,包括没有被包围到组里面的内容。当获取0组的时候,你可以不写这个参数。m.group(0)和m.group()的效果是一样的:

>>> m.group()

'Tom 24 88888888<='

接下来看看更多的Match对象的方法,看看我们能做些什么。

3.2.2Match对象的方法

group([index|id])获取匹配的组,缺省返回组0,也就是全部值

groups()返回全部的组

groupdict()返回以组名为key,匹配的内容为values的字典

接上例:

>>> m.groupindex()

{'age': '24', 'tel': '88888888', 'name': 'Tom'}

start( [group] )获取匹配的组的开始位置

end( [group] )获取匹配的组的结束位置

span( [group] )获取匹配的组的(开始,结束)位置

expand( template )根据一个模版用找到的内容替换模版里的相应位置

这个功能比较有趣,它根据一个模版来用匹配到的内容替换模版中的相应位置,组成一个新的字符串返回。它使用\g或\index来指示一个组。

接上例

>>> m.expand(r'name is \g<1> , age is \g , tel is \3')

'name is Tom , age is 24 , tel is 88888888'

除了以上这些函数外,Match对象还有些属性

pos搜索开始的位置参数

endpos搜索结束的位置参数

这两个是使用findall或match等函数时,传入的参数。在上面这个例子里,我们没有指定开始和结束位置,那么缺省的开始位置就是0,结束位置就是最后。

>>> m.pos

>>> m.endpos

19

lastindex最后匹配的组的序号

>>> https://www.360docs.net/doc/c96021401.html,stindex

3

lastgroup最后匹配的组名

>>> https://www.360docs.net/doc/c96021401.html,stgroup

'tel'

re产生这个匹配的Pattern对象,可以认为是个逆引用

>>> m.re.pattern

'(?P[a-z]+)\\s+(?P\\d+)\\s+(?P\\d+).*'

得到了产生这个匹配的规则

string匹配的目标字符串

>>> m.string

'Tom 24 88888888<='

Python OS模块(常见文件操作示例)

Python常见文件操作示例 2. 3. os.path 模块中的路径名访问函数 4. 分隔 5. basename() 去掉目录路径, 返回文件名 6. dirname() 去掉文件名, 返回目录路径 7. join() 将分离的各部分组合成一个路径名 8. split() 返回(dirname(), basename()) 元组 9. splitdrive() 返回(drivename, pathname) 元组 10. splitext() 返回(filename, extension) 元组 11. 12. 信息 13. getatime() 返回最近访问时间 14. getctime() 返回文件创建时间 15. getmtime() 返回最近文件修改时间 16. getsize() 返回文件大小(以字节为单位) 17. 18. 查询 19. exists() 指定路径(文件或目录)是否存在 20. isabs() 指定路径是否为绝对路径 21. isdir() 指定路径是否存在且为一个目录 22. isfile() 指定路径是否存在且为一个文件 23. islink() 指定路径是否存在且为一个符号链接 24. ismount() 指定路径是否存在且为一个挂载点 25. samefile() 两个路径名是否指向同个文件 26. 27. os.path.isdir(name):判断name是不是一个目录,name不是目录就返回false 28. os.path.isfile(name):判断name是不是一个文件,不存在name也返回false 29. os.path.exists(name):判断是否存在文件或目录name 30. os.path.getsize(name):获得文件大小,如果name是目录返回0L 31. os.path.abspath(name):获得绝对路径 32. os.path.normpath(path):规范path字符串形式 33. os.path.split(name):分割文件名与目录(事实上,如果你完全使用目录,它也会将最后一个目录作为文件名而分离,同时它不会判断文件或目录是否存在) 34. os.path.splitext():分离文件名与扩展名 35. os.path.join(path,name):连接目录与文件名或目录 36. os.path.basename(path):返回文件名 37. os.path.dirname(path):返回文件路径 38. 39. 40. os模块中的文件操作: 41. os 模块属性

(完整word版)教会你所有的Python模块使用.doc

看了这篇你就会了所有的python模块使用 如果你退出Python解释器并重新进入,你做的任何定义(变量和方法)都 会丢失。因此,如果你想要编写一些更大的程序,为准备解释器输入使用一个 文本编辑器会更好,并以那个文件替代作为输入执行。这就是传说中的脚本。 随着你的程序变得越来越长,你可能想要将它分割成几个更易于维护的文件。 你也可能想在不同的程序中使用顺手的函数,而不是把代码在它们之间中拷来 拷去。 为了满足这些需要, Python提供了一个方法可以从文件中获取定义,在脚本 或者解释器的一个交互式实例中使用。这样的文件被称为模块;模块中的定义可以导入到另一个模块或主模块中(在脚本执行时可以调用的变量集位于最高级,并且处于计算器模式)。 模块是包括Python定义和声明的文件。文件名就是模块名加上.py后缀。模块的模块名(做为一个字符串)可以由全局变量__name__得到。例如,你可以用自己惯用的文件编辑器在当前目录下创建一个叫fibo.py的文件,录入如下内容 :

现在进入Python解释器并使用以下命令导入这个模块: 这样做不会直接把fibo 中的函数导入当前的语义表;它只是引入了模块名 fibo。你可以通过模块名按如下方式访问这个函数: 如果打算频繁使用一个函数,你可以将它赋予一个本地变量: 深入模块 除了包含函数定义外,模块也可以包含可执行语句。这些语句一般用来初始化 模块。他们仅在第一次被导入的地方执行一次。 每个模块都有自己私有的符号表,被模块内所有的函数定义作为全局符号表使 用。因此,模块的作者可以在模块内部使用全局变量,而无需担心它与某个用 户的全局变量意外冲突。从另一个方面讲,如果你确切的知道自己在做什么, 你可以使用引用模块函数的表示法访问模块的全局变量, modname.itemname。 模块可以导入其他的模块。一个(好的)习惯是将所有的import语句放在 模块的开始(或者是脚本),这并非强制。被导入的模块名会放入当前模块的 全局符号表中。小编为大家推荐一个学习交流群:308754087,群里有人都快满了 ~ 大家遇到啥问题都可以在里面交流!是一个非常好的学习交流地方~ 欲进从速欧 ~ 各种 PDF 等你来下载,全部免费,只为帮助大家快速入门。

【IT专家】在Python中逐步查找流数据中的正则表达式匹配

本文由我司收集整编,推荐下载,如有疑问,请与我司联系 在Python 中逐步查找流数据中的正则表达式匹配 在Python 中逐步查找流数据中的正则表达式匹配[英]Incrementally finding regular expression matches in streaming data in Python I have data streaming into a number of TCP sockets continuously. For each, I have a different regular expression that I need to pull out matches for. For example, one might match numbers of the format ##.# followed by the letter f: 我有数据流连续进入许多TCP 套接字。对于每一个,我有一个不同的正则表达式, 我需要拉出匹配。例如,可以匹配格式##。#的数字,后跟字母f: r = repile(rb’([0-9][0-9]\.[0-9])f’)Another might match numbers of the format ### preceded by the letter Q: 另一个可能匹配字母Q 前面的###格式的数字: r = repile(rb’Q([0-9][0-9][0-9])’) In reality, the expressions may be of arbitrary length and complexity, and are pulled from configuration files and not known in advance. They are not hard-coded. 实际上,表达式可以具有任意长度和复杂性,并且从配置文件中提取并且事先不知 道。它们不是硬编码的。 When new data comes in, I append it to a buffer of type bytearray() (here called self.buffer). Then I call a function like this (with self.r being the compiled regular expression): 当新数据进入时,我将它附加到bytearray()类型的缓冲区(此处称为self.buffer)。然 后我调用这样的函数(self.r 是编译的正则表达式): def advance(self): m = self.r.search(self.buffer) # No match. Return. if m is None: return None # Match. Advance the buffer and return the matched groups. self.buffer = self.buffer[m.end():] return m.groups() If there is no match yet, it returns None. If there is a match, it returns the match and discards the buffer up to the end of the match, making itself ready to be called again.

python 之 numpy 模块的基本使用

python 之numpy 模块的基本使用 一、numpy概述 NumPy(Numerical Python的简称)是高性能科学和数据分析的基础包。numpy模块提供了Python对N维数组对象的支持:ndarray,ndarray数组中的元素须为同一数据类型,这一点与python的列表是不一样的。numpy支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。其主要功能如下。 二、创建ndarray数组 代码示例:

# -*- coding: utf-8 -*- import numpy; print '使用列表生成一维数组' data = [1,2,3,4,5,6] x = numpy.array(data) print x #打印数组 print x.dtype #打印数组元素的类型 print '使用列表生成二维数组' data = [[1,2],[3,4],[5,6]] x = numpy.array(data) print x #打印数组 print x.ndim #打印数组的维度 print x.shape #打印数组各个维度的长度。shape是一个元组 print '使用zero/ones/empty创建数组:根据shape来创建' x = numpy.zeros(6) #创建一维长度为6的,元素都是0一维数组 print x x = numpy.zeros((2,3)) #创建一维长度为2,二维长度为3的二维0数组 print x x = numpy.ones((2,3)) #创建一维长度为2,二维长度为3的二维1数组 print x x = numpy.empty((3,3)) #创建一维长度为2,二维长度为3,未初始化的二维数组print x print '使用arrange生成连续元素' print numpy.arange(6) # [0,1,2,3,4,5,] 开区间 print numpy.arange(0,6,2) # [0, 2,4] 三、指定ndarray数组元素的类型 NumPy数据类型:

python专业题材正则表达式

正则表达式 正则表达式(Regular Expression)是一种文本模式,包括普通字符和特殊字符。 正则表达式使用单个字符串来描述、匹配一系列某个句法规则的字符串。 简介 为什么使用正则表达式 ●测试字符串内的模式 ●替换文本 ●基于模式匹配从字符串中提取子字符串 语法 正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某些子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。 普通字符 普通字符包括没有显示指定为元字符(特殊字符和符号)的所有可打印和不可打印字符,这包括所有大写和小写字母、所有数字、所有标点符号和一些其他字符。

非打印字符 特殊字符 所谓特殊字符,就是一些含有特殊含义的字符。许多元字符要求在试图匹配它们时特别对待。若要匹配这些特殊字符,必须首先使用字符“转义”,即,将反斜杠“\”放在它们前面。

限定符 限定符用来指定正则表达式的一个给定组件必须要出现多少次才能满足匹配。 “*”匹配前面的子表达式零次或多次,例如/zo*/,匹配“*”前的字符“o”零次或多

次,匹配“z”时匹配了“*”前的子表达式“o”是零次。 ●*、+和?限定符都是贪婪的,因为它们会尽可能多的匹配文字,只有在它们的后面加上? 就可以实现非贪婪或最小匹配。例如:

Chapter 1 -介绍正则表达式

贪婪模式: 下面的表达式匹配从开始小于符号(<) 到关闭H1 标记的大于符号(>) 之间的所有内容。/<.*>/ ,贪婪模式匹配结果:

Chapter 1 -介绍正则表达式

非贪婪: 如果您只需要匹配开始和介绍H1 标记,下面的非贪婪表达式只匹配

。 /<.*?>/,非贪婪只会匹配:

定位符 定位符能够将正则表达式固定到行首或行尾。 注意: ●不能讲限定符与定位点一起使用。不允许诸如^*之类的表达式。 ●若要匹配一行文本开始处的文本,在正则表达式的开始使用^字符。 ●若要匹配一行文本的结束处的文本,在正则表达式的结束处使用$字符。 例如: /^Chapter [1-9][0-9]{0,1}$/ 字边界是单词和空格之间的位置。非字边界是任何其他位置。下面的表达式匹配单词Chapter 的开头三个字符,因为这三个字符出现在字边界的后面: /\bCha/ \b字符的位置是非常重要的。如果它位于匹配字符串的开始,它在单词开始处查找匹配项。

python常用模块

python常用模块

python 1.******************** 2.PY核心模块方法 3.******************** 4.os模块: 5. os.remove() 删除文件 6. os.unlink() 删除文件 7. os.rename() 重命名文件 8. os.listdir() 列出指定目录下所有文件 9. os.chdir() 改变当前工作目录 10. os.getcwd() 获取当前文件路径 11. os.mkdir() 新建目录 12. os.rmdir() 删除空目录(删除非空目录, 使用shutil.rmtree()) 13. os.makedirs() 创建多级目录 14. os.removedirs() 删除多级目录 15. os.stat(file) 获取文件属性 16. os.chmod(file) 修改文件权限 17. os.utime(file) 修改文件时间戳 18. https://www.360docs.net/doc/c96021401.html,(file) 获取操作系统标识 19. os.system() 执行操作系统命令 20. os.execvp() 启动一个新进程 21. os.fork() 获取父进程ID,在子进程返回中返回0 22. os.execvp() 执行外部程序脚本(Uinx) 23. os.spawn() 执行外部程序脚本(Windows) 24. os.access(path, mode) 判断文件权限(详细参考cnblogs) 25. os.wait() 暂时未知 26.os.path模块: 27. os.path.split(filename) 将文件路径和文件名分割(会将最后一个目录作为文件名而分 离) 28. os.path.splitext(filename) 将文件路径和文件扩展名分割成一个元组 29. os.path.dirname(filename) 返回文件路径的目录部分 30. os.path.basename(filename) 返回文件路径的文件名部分 31. os.path.join(dirname,basename) 将文件路径和文件名凑成完整文件路径 32. os.path.abspath(name) 获得绝对路径 33. os.path.splitunc(path) 把路径分割为挂载点和文件名 34. os.path.normpath(path) 规范path字符串形式 35. os.path.exists() 判断文件或目录是否存在 36. os.path.isabs() 如果path是绝对路径,返回True 37. os.path.realpath(path) #返回path的真实路径 38. os.path.relpath(path[, start]) #从start开始计算相对路径 39. os.path.normcase(path) #转换path的大小写和斜杠

Python正则表达式re模块简明笔记

Python正则表达式re模块简明笔记 要注意的是,正则表达式并不是一个程序,而是用于处理字符串的一种模式,如果你想用它来处理字符串,就必须使用支持正则表达式的工具,比如Linux 中的awk, sed, grep,或者编程语言Perl, Python, Java 等等。 作者:FunHacks来源:FunHacks|2016-12-28 11:20 收藏 分享 简介 正则表达式(regular expression)是可以匹配文本片段的模式。最简单的正则表达式就是普通字符串,可以匹配其自身。比如,正则表达式‘hello’ 可以匹配字符串‘hello’。 要注意的是,正则表达式并不是一个程序,而是用于处理字符串的一种模式,如果你想用它来处理字符串,就必须使用支持正则表达式的工具,比如Linux 中的awk, sed, grep,或者编程语言Perl, Python, Java 等等。 正则表达式有多种不同的风格,下表列出了适用于Python 或Perl 等编程语言的部分元字符以及说明:

re 模块 在Python 中,我们可以使用内置的re 模块来使用正则表达式。 有一点需要特别注意的是,正则表达式使用\对特殊字符进行转义,比如,为了匹配字符串‘https://www.360docs.net/doc/c96021401.html,’,我们需要使用正则表达式'python\.org',而Python 的字符串本身也用\转义,所以上面的正则表达式在Python 中应该写成'python\\.org',这会很容易陷入\的困扰中,因此,我们建议使用Python 的原始字符串,只需加一个r 前缀,上面的正则表达式可以写成: r'python\.org' re 模块提供了不少有用的函数,用以匹配字符串,比如:

python中常用的模块的总结

1、模块和包 a.定义: 模块用来从逻辑上组织python代码(变量,函数,类,逻辑:实现一个功能),本质就是.py 结尾的python文件。(例如:文件名:test.py,对应的模块名:test) 包:用来从逻辑上组织模块的,本质就是一个目录(必须带有一个__init__.py的文件)b.导入方法 import module_name import module_1的本质:是将module_1解释了一遍 也就是将module_1中的所有代码复制给了module_1 from module_name1 import name 本质是将module_name1中的name变量放到当前程序中运行一遍 所以调用的时候直接print(name)就可以打印出name变量的值 代码例子:自己写的模块,其他程序调用,如下所示: 模块module_1.py代码: 复制代码 1 name = "dean" 2 def say_hello(): 3 print("hello %s" %name) 调用模块的python程序main代码如下:(切记调用模块的时候只需要import模块名不需要加.py) import module_1 #调用变量 print(module_https://www.360docs.net/doc/c96021401.html,)

#调用模块中的方法 module_1.say_hello() 复制代码 这样运行main程序后的结果如下: 1 D:\python35\python.exe D:/python培训/s14/day5/module_test/main.py 2 dean 3 hello dean 4 5 Process finished with exit code 0 import module_name1,module_name2 from module_name import *(这种方法不建议使用) from module_name import logger as log(别名的方法) c.导入模块的本质就是把python文件解释一遍 import module_name---->module_name.py---->module_name.py的路径---->sys.path 导入包的本质就是执行该包下面的__init__.py 关于导入包的一个代码例子: 新建一个package_test包,并在该包下面建立一个test1.py的python程序,在package 包的同级目录建立一个p_test.py的程序 test1的代码如下: 1 def test(): 2 print("int the test1") package_test包下的__init__.py的代码如下: 1 #import test1 (理论上这样就可以但是在pycharm下测试必须用下面from .import test1) 2 from . import test1 3 print("in the init") p_test的代码如下:

Python正则表达式re模块简明笔记

Python正则表达式re模块简明笔记

Python正则表达式re模块简明笔记 要注意的是,正则表达式并不是一个程序,而是用于处理字符串的一种模式,如果你想用它来处理字符串,就必须使用支持正则表达式的工具,比如Linux 中的awk, sed, grep,或者编程语言Perl, Python, Java 等等。 作者:FunHacks来源:FunHacks|2016-12-28 11:20 收藏 分享 简介 正则表达式(regular expression)是可以匹配文本片段的模式。最简单的正则表达式就是普通字符串,可以匹配其自身。比如,正则表达式‘hello’ 可以匹配字符串‘hello’。 要注意的是,正则表达式并不是一个程序,而是用于处理字符串的一种模式,如果你想用它来处理字符串,就必须使用支持正则表达式的工具,比如Linux 中的awk, sed, grep,或者编程语言Perl, Python, Java 等等。 正则表达式有多种不同的风格,下表列出了适用于Python 或Perl 等编程语言的部分元字符以及说明:

re 模块 在Python 中,我们可以使用内置的re 模块来使用正则表达式。 有一点需要特别注意的是,正则表达式使用\对特殊字符进行转义,比如,为了匹配字符串‘https://www.360docs.net/doc/c96021401.html,’,我们需要使用正则表达式'python\.org',而Python 的字符串本身也用\转义,所以上面的正则表达式在Python 中应该写成'python\\.org',这会很容易陷入\的困扰中,因此,我们建议使用Python 的原始字符串,只需加一个r 前缀,上面的正则表达式可以写成: r'python\.org'

Python2.7处理文本常用代码模块

目录 【Python 模块】文件读入输出一 (1) 【Python 模块】文件读入输出二 (1) 【Python 模块】文件输入输出及拆分示例 (1) 【Python 模块】for循环示例连加 (2) 【Python 模块】while循环示例连加 (2) 【Python 模块】函数及判断示例 (2) 【Python 模块】文本拆分示例 (3) 【Python 模块】使用多个字符分割 (3) 【Python 模块】修剪字符串 (3) 【Python 模块】删除空行技巧 (3) 【Python 模块】and or 技巧 (4) 【Python 模块】面向对象的类及示例 (4) 【Python 模块】子类与继承示例 (4) 【Python 模块】字符统计实例 (5) 【Python 模块】网页访问数据获取示例 (6) 【Python综合】猜游戏程序示例 (6) 【Python 模块】文件读入输出一 f=file('tmp.txt') data=f.read() f.close out=file('out.txt','w') out.write(data) out.close 【Python 模块】文件读入输出二 data='\nI will be in a file.\nSo cool!' out =open('output.txt','a') print data out.write(data) out.close 【Python 模块】文件输入输出及拆分示例 f = file('scores.txt')

lines=f.readlines() #从文件中读取全部行 f.close print lines; results=[] for line in lines: #对每一行数据进行处理 data = line.split() print data sum=0 for score in data[1:]: print int(score) sum +=int(score) #print sum result='%s\t:%d\n' %(data[0],sum) print result results.append(result) print results output=file('result.txt','a') #打开文件,模式为附加output.writelines(results) #将数据写入文件附加在最后output.close() 【Python 模块】for循环示例连加 sum=0 for a in range(0,100): sum=sum+a+1 print "a=%d" %a print "sum=%s" %sum print "从1连加到100的和为%s" %sum 【Python 模块】while循环示例连加 # -*- coding: cp936 -*- a=0 sum=0 while a<100: a+=1 sum=sum+a print "a=%d" %a print "sum=%s" %sum print "从1连加到100的和为%s" %sum 【Python 模块】函数及判断示例 def isEqual(num1,num2): if num1 < num2:

python常用模块

python中os模块中文帮助文档 文章分类:Python编程 python中os模块中文帮助文档 翻译者:butalnd 翻译于2010.1.7——2010.1.8,个人博客:https://www.360docs.net/doc/c96021401.html,/ 注此模块中关于unix中的函数大部分都被略过,翻译主要针对WINDOWS,翻译速度很快,其中很多不足之处请多多包涵。 这个模块提供了一个轻便的方法使用要依赖操作系统的功能。如何你只是想读或写文件,请使用open() ,如果你想操作文件路径,请使用os.path模块,如果你想在命令行中,读入所有文件的所有行,请使用 fileinput模块。使用tempfile模块创建临时文件和文件夹,更高级的文件和文件夹处理,请使用shutil模块。 os.error 内建OSError exception的别名。 https://www.360docs.net/doc/c96021401.html, 导入依赖操作系统模块的名字。下面是目前被注册的名字:'posix', 'nt', 'mac', 'os2', 'ce', 'java', 'riscos'. 下面的function和data项是和当前的进程和用户有关 os.environ 一个mapping对象表示环境。例如,environ['HOME'] ,表示的你自己home文件夹的路径(某些平台支持,windows不支持) ,它与C中的getenv("HOME")一致。 这个mapping对象在os模块第一次导入时被创建,一般在python启动时,作为site.py处理过程的一部分。在这一次之后改变environment不 影响os.environ,除非直接修改os.environ. 注:putenv()不会直接改变os.environ,所以最好是修改os.environ 注:在一些平台上,包括FreeBSD和Mac OS X,修改environ会导致内存泄露。参考putenv()的系统文档。 如果没有提供putenv(),mapping的修改版本传递给合适的创建过程函数,将导致子过程使用一个修改的environment。 如果这个平台支持unsetenv()函数,你可以删除mapping中的项目。当从os.environ使用pop()或clear()删除一个项目时,unsetenv()会自动被调用(版本2.6)。

python常用模块

python 1.******************** 2.PY核心模块方法 3.******************** 4.os模块: 5. os.remove() 删除文件 6. os.unlink() 删除文件 7. os.rename() 重命名文件 8. os.listdir() 列出指定目录下所有文件 9. os.chdir() 改变当前工作目录 10. os.getcwd() 获取当前文件路径 11. os.mkdir() 新建目录 12. os.rmdir() 删除空目录(删除非空目录, 使用shutil.rmtree()) 13. os.makedirs() 创建多级目录 14. os.removedirs() 删除多级目录 15. os.stat(file) 获取文件属性 16. os.chmod(file) 修改文件权限 17. os.utime(file) 修改文件时间戳 18. https://www.360docs.net/doc/c96021401.html,(file) 获取操作系统标识 19. os.system() 执行操作系统命令 20. os.execvp() 启动一个新进程 21. os.fork() 获取父进程ID,在子进程返回中返回0 22. os.execvp() 执行外部程序脚本(Uinx) 23. os.spawn() 执行外部程序脚本(Windows) 24. os.access(path, mode) 判断文件权限(详细参考cnblogs) 25. os.wait() 暂时未知 26.os.path模块: 27. os.path.split(filename) 将文件路径和文件名分割(会将最后一个目录作为文件名而分 离) 28. os.path.splitext(filename) 将文件路径和文件扩展名分割成一个元组 29. os.path.dirname(filename) 返回文件路径的目录部分 30. os.path.basename(filename) 返回文件路径的文件名部分 31. os.path.join(dirname,basename) 将文件路径和文件名凑成完整文件路径 32. os.path.abspath(name) 获得绝对路径 33. os.path.splitunc(path) 把路径分割为挂载点和文件名 34. os.path.normpath(path) 规范path字符串形式 35. os.path.exists() 判断文件或目录是否存在 36. os.path.isabs() 如果path是绝对路径,返回True 37. os.path.realpath(path) #返回path的真实路径 38. os.path.relpath(path[, start]) #从start开始计算相对路径 39. os.path.normcase(path) #转换path的大小写和斜杠 40. os.path.isdir() 判断name是不是一个目录,name不是目录就返回false 41. os.path.isfile() 判断name是不是一个文件,不存在返回false 42. os.path.islink() 判断文件是否连接文件,返回boolean 43. os.path.ismount() 指定路径是否存在且为一个挂载点,返回boolean 44. os.path.samefile() 是否相同路径的文件,返回boolean 45. os.path.getatime() 返回最近访问时间浮点型

Python3 如何优雅地使用正则表达式

正则表达式(Regular expressions 也称为REs,或regexes 或regex patterns)本质上是一个微小的且高度专业化的编程语言。它被嵌入到Python 中,并通过re 模块提供给程序猿使用。使用正则表达式,你需要指定一些规则来描述那些你希望匹配的字符串集合。这些字符串集合可能包含英语句子、 e-mail 地址、TeX 命令,或任何你想要的东东。 正则表达式模式被编译成一系列的字节码,然后由一个C 语言写的匹配引擎所执行。对于高级的使用,你可能需要更关注匹配引擎是如何执行给定的RE,并通过一定的方式来编写RE,以便产生一个可以运行得更快的字节码。本文暂不讲解优化的细节,因为这需要你对匹配引擎的内部机制有一个很好的理解。但本文的例子均是符合标准的正则表达式语法。 小甲鱼注释:Python 的正则表达式引擎是用C 语言写的,所以效率是极高的。另,所谓的正则表达式,这里说的RE,就是上文我们提到的“一些规则”。 正则表达式语言相对较小,并且受到限制,所以不是所有可能的字符串处理任务都可以使用正则表达式来完成。还有一些特殊的任务,可以使用正则表达式来完成,但是表达式会因此而变得非常复杂。在这种情况下,你可能通过自己编写Python 代码来处理会更好些;尽管Python 代码比一个精巧的正则表达式执行起来会慢一些,但可能会更容易理解。 小甲鱼注释:这可能是大家常说的“丑话说在前”吧,大家别管他,正则表达式非常优秀,她可以处理你98.3% 的文本任务,一定要好好学哦~~~~~ 简单的模式 我们将从最简单的正则表达式学习开始。由于正则表达式常用于操作字符串的,因此我们从最常见的任务下手:字符匹配。 字符匹配 大多数字母和字符会匹配它们自身。举个例子,正则表达式 FishC 将完全匹配字符串 "FishC"。(你可以启用不区分大小写模式,这将使得 FishC 可以匹配 "FISHC" 或 "fishc",我们会在后边讨论这个话题。) 当然这个规则也有例外。有少数特殊的字符我们称之为元字符(metacharacter),它们并不能匹配自身,它们定义了字符类、子组匹配和模式重复次数等。本文用很大的篇幅专门讨论了各种元字符及其作用。 下边是元字符的完整列表(我们将在后边逐一讲解): . ^ $ * + ? { } [ ] \ | ( )

Python3 正则表达式特殊符号及用法

Python3 正则表达式特殊符号及用法(详细列表) 正则表达式的强大之处在于特殊符号的应用,特殊符号定义了字符集合、子组匹配、模式重 复次数。正是这些特殊符号使得一个正则表达式可以匹配字符串集合而不只是一个字符串。 注1:为了便于理解,难点的地方均用斜体举了栗子。 注2:如果你对正则表达式一头雾水或者看不懂下边这个列表,那么小甲鱼极力推荐你先学 习这个:Python3 如何优雅地使用正则表达式 字符含义 表示匹配除了换行符外的任何字符 . 注:通过设置re.DOTALL 标志可以使 . 匹配任何字符(包含换行符)| A | B,表示匹配正则表达式A 或者B 1. (脱字符)匹配输入字符串的开始位置 ^ 2. 如果设置了re.MULTILINE 标志,^ 也匹配换行符之后的位置 1. 匹配输入字符串的结束位置 $ 2. 如果设置了re.MULTILINE 标志,$ 也匹配换行符之前的位置 1. 将一个普通字符变成特殊字符,例如 \d 表示匹配所有十进制数字 \ 2. 解除元字符的特殊功能,例如 \. 表示匹配点号本身

3. 引用序号对应的子组所匹配的字符串 4. 详见下方列举 [...] 字符类,匹配所包含的任意一个字符 注1:连字符 - 如果出现在字符串中间表示字符范围描述;如果如果出现仅作为普通字符 注2:特殊字符仅有反斜线 \ 保持特殊含义,用于转义字符。其它特殊字+、? 等均作为普通字符匹配 注3:脱字符 ^ 如果出现在首位则表示匹配不包含其中的任意字符;如果在字符串中间就仅作为普通字符匹配 {M,N} M 和N 均为非负整数,其中M <= N,表示前边的RE 匹配M ~ N 注1:{M,} 表示至少匹配M 次 注2:{,N} 等价于{0,N} 注3:{N} 表示需要匹配N 次 * 匹配前面的子表达式零次或多次,等价于{0,} + 匹配前面的子表达式一次或多次,等价于{1,} ? 匹配前面的子表达式零次或一次,等价于{0,1} *?, +?, ?? 默认情况下 *、+ 和 ? 的匹配模式是贪婪模式(即会尽可能多地匹配符合符串);*?、+? 和?? 表示启用对应的非贪婪模式。 举个栗子:对于字符串"FishCCC",正则表达式 FishC+ 会匹配整个字符而 FishC+? 则匹配"FishC"。

python扩展模块

一、扩展模块 ■影像扩展模块PIL(单独安装) 影像扩展模块需安装PIL V1.16(与python版本对应) 安装完毕后调用方式为: import Image # 注意首字母大写!! im = Image.open(r"d:\000.jpg") # 注意路径字符串的处理 row, col = im.size # 获取影像的尺寸 ■声音引擎pyTTS扩展模块(单独安装) 下载并安装pytts 3.0(for python 2.5版),然后使用以下代码即可发声!! import pyTTS # 注意大小写 tts = pyTTS.Create() # 注意首字母大写 tts.Speak("Mission Finished!") # 注意首字母大写 ■Math库(系统自带) from math import * 1、包含两个常数,pi, e注意小写 2、包含常用的算术运算:floor, ceil, log, log10, exp, sqrt 3、包含常用的三角运算:sin, cos, tan, asin, acos, atan, degree, radians 注意:1、abs()为系统内置函数;2、numpy可以替代 math 实现所有功能!! ■Random库(系统自带) 1、整型随机数: randint(a, b) # 生成[a, b)的整型浮点数

randrange(a, b, s) # 生成[a, b)的整型浮点数 2、浮点随机数: random() # 生成[0, 1)的浮点随机数 uniform(a, b) # 生成[a, b)的浮点随机数 ■FTP库(系统自带) import ftplib 1、ftp服务器的连接 ftp = ftplib.FTP("192.168.209.205") # 连接影响服务器,注意FTP要大写 print ftp.login("sino", "801") # 使用用户名登录 2、路径操作 ftp.cwd("/aaa/bbb//") # 设置当前工作路径 ftp.mkd("/aaa/bbb/ccc//") # 创建路径 ftp.rmk("/aaa/bbb/ccc//") # 删除路径 ftp.pmd("/aaa/bbb//") # 返回当前路径名 3、文件操作 ftp.rename(...) # 文件更名 ftp.delete(...) # 文件删除 二、数组/矩阵处理 早期有个包叫Numeric,后来有人写了numarray替代它,很快有人写了个numpy把两个包都替换了,现在有人在Numpy的基础上写了个Scipy,这个咚咚不错,可以完成80%的Matlab工作!! numpy是python用于科学计算的扩展模块,numpy提供ndarray和ufunc两个对象,主要提供数组对

正则表达式

1.Python正则式的基本用法 1.1基本规则 1.2重复 1.2.1最小匹配与精确匹配 1.3前向界定与后向界定 1.4组的基本知识 2.re模块的基本函数 2.1使用compile加速 2.2 match和search 2.3 finditer 2.4 字符串的修改与替换3.更深入的了解re的组与对象 3.1编译后的Pattern对象 3.2 组与Match对象 3.2.1组的名字与序号 3.2.2 Match对象的方法4.更多的资料

初学Python,对Python的文字处理能力有很深的印象,除了str对象自带 的一些方法外,就是正则表达式这个强大的模块了。但是对于初学者来说,要用好这个功能还是有点难度,我花了好长时间才摸出了点门道。由于我记性不好,很容易就忘事,所以还是写下来比较好一些,同时也可以加深印象,整理思路。 由于我是初学,所以肯定会有些错误,还望高手不吝赐教,指出我的错误。 1 Python正则式的基本用法 Python的正则表达式的模块是…re?,它的基本语法规则就是指定一个字符序列,比如你要在一个字符串s=?123abc456?中查找字符串?abc?,只要这样写:>>> import re >>> s='123abc456eabc789' >>>re.findall(r?abc?,s) 结果就是: ['abc', 'abc'] 这里用到的函数”findall(rule , target [,flag] )”是个比较直观的函数,就是在目标字符串中查找符合规则的字符串。第一个参数是规则,第二个参数是目标字符串,后面还可以跟一个规则选项(选项功能将在compile函数的说明中详细说明)。返回结果结果是一个列表,中间存放的是符合规则的字符串。如果没有符合规则的字符串被找到,就返回一个空列表。 为什么要用r’ ..‘字符串(raw字符串)?由于正则式的规则也是由一个字符串定义的,而在正则式中 大量使用转义字符’/’,如果不用raw字符串,则在需要写一个’/’的地方,你必须得写成’//’,那么在要从目 标字符串中匹配一个’/’的时候,你就得写上4个’/’成为’////’!这当然很麻烦,也不直观,所以一般都使用r’’ 来定义规则字符串。当然,某些情况下,可能不用raw字符串比较好。 以上是个最简单的例子。当然实际中这么简单的用法几乎没有意义。为了实现复杂的规则查找,re规定了若干语法规则。它们分为这么几类:功能字符:….? …*? …+? …|? …?? …^? …$? …/?等,它们有特殊的功能含义。特别是?/?字符,它是转义引导符号,跟在它后面的字符一般有特殊的含义。 规则分界符:…[… …]? …(? …)? …{… …}?等,也就是几种括号了。 预定义转义字符集:“/d”“/w” “/s”等等,它们是以字符?/?开头,后面接一个特定字符的形式,用来指示一个预定义好的含义。

常用的PYTHON模块功能和下载地址

常用的python模块功能和下载地址 2009-07-1311:09 adodb:我们领导推荐的数据库连接组件 bsddb3:BerkeleyDB的连接组件 Cheetah-1.0:我比较喜欢这个版本的cheetah cherrypy:一个WEB framework ctypes:用来调用动态链接库 DBUtils:数据库连接池 django:一个WEB framework docutils:用来写文档的 dpkt:数据包的解包和组包 MySQLdb:连接MySQL数据库的 py2exe:用来生成windows可执行文件 Pylons:我们领导推荐的web framework pysqlite2:SQLite的连接组件 pythonwin:Python的Windows扩展 setuptools:无奈,PEAK的一套python包管理机制 sqlalchemy:数据库连接池 SQLObject:数据库连接池 twisted:巨无霸的网络编程框架 wxPython-2.6:因为需要保持与linux相同的版本才没用最新的,GUI编程框架pypcap:抓包的 python-dnet:控制网络安全的其他设备 pyevent:Python的事件支持 pydot:画图的,graphiz sendpkt:Python发包 simplejson:JSON的支持 DPKT:raw-scoket网络编程 Cx-oracle:连接oracle的好东东 Mechanize:爬虫连接网站常用 PIL:图像处理工具包 reportlab for PDF文件。 PyQt4for GUI界面 feedparser:rss解析 chardet:编码检测 scons:项目构建工具,写好了模板用起来还是很方便的 scapy:网络包构建分析框架,可编程的wireshark,有兴趣的google“Silver Needle in the Skype” pefile:windows pe文件解析器

相关文档
最新文档