Python编程之Re模块下的函数介绍


Posted in Python onOctober 28, 2017

re模块下的函数

compile(pattern):创建模式对象

import re
pat=re.compile('A')
m=pat.search('CBA')          #等价于 re.search('A','CBA')
print m
<_sre.SRE_Match object at 0x9d690c8>  #匹配到了,返回MatchObject(True)
m=pat.search('CBD')
print m
None                  #没有匹配到,返回None(False)

search(pattern,string):在字符串中寻找模式

m = re.search('asd','ASDasd')
print m
<_sre.SRE_Match object at 0xb72cd6e8> #匹配到了,返回MatchObject(True)
m = re.search('asd','ASDASD')
print m
None                  #没有匹配到,返回None(False)

match(pattern,string):在字符串开始处匹配模式

m = re.search('asd','ASDasd')
print m
<_sre.SRE_Match object at 0xb72cd6e8> #匹配到了,返回MatchObject(True)
m = re.search('asd','ASDASD')
print m
None                  #没有匹配到,返回None(False)

等价于

pat=re.compile('a')
print pat.match('Aasd')
None
printpat.match('aASD')
<_sre.SRE_Match object at 0xb72cd6e8>

上面的函数返回都可以在if条件语句中进行判断:

if pat.search('asd'):
...   print 'OK'
... 
OK    #找到返回
if re.search('a','ASD'):
...   print "OK"
...    #没有找到

split(pattern,string):根据模式分割字符串,返回列表

re.split(',','a,s,d,asd')
['a', 's', 'd', 'asd']     #返回列表
 
pat = re.compile(',')
pat.split('a,s,d,asd')
['a', 's', 'd', 'asd']     #返回列表
 
re.split('[, ]+','a , s ,d   ,,,,,asd')  #正则匹配:[, ]+,后面说明
['a', 's', 'd', 'asd']
 
re.split('[, ]+','a , s ,d   ,,,,,asd',maxsplit=2) # maxsplit 最多分割次数
['a', 's', 'd   ,,,,,asd']
 
pat = re.compile('[, ]+')           #正则匹配:[, ]+,后面说明
pat.split('a , s ,d   ,,,,,asd',maxsplit=2)    # maxsplit 最多分割次数
['a', 's', 'd   ,,,,,asd']

findall(pattern,string):列表形式返回匹配项

re.findall('a','ASDaDFGAa') 
['a', 'a']              #列表形式返回匹配到的字符串
pat = re.compile('a')
pat.findall('ASDaDFGAa')
['a', 'a']              #列表形式返回匹配到的字符串
pat = re.compile('[A-Z]+')    #正则匹配:'[A-Z]+' 后面有说明
pat.findall('ASDcDFGAa')
['ASD', 'DFGA']           #找到匹配到的字符串
pat = re.compile('[A-Z]')
pat.findall('ASDcDFGAa')     #正则匹配:'[A-Z]+' 后面有说明
['A', 'S', 'D', 'D', 'F', 'G', 'A'] #找到匹配到的字符串
pat = re.compile('[A-Za-z]')   #正则匹配:'[A-Za-z]+' 匹配所有单词,后面有说明
pat.findall('ASDcDFGAa')
['A', 'S', 'D', 'c', 'D', 'F', 'G', 'A', 'a']

sub(pat,repl,string) :用repl替换 pat匹配项

(留的是中间的,因为中间在中心)

re.sub('a','A','abcasd')  #找到a用A替换,后面见和group的配合使用
'AbcAsd'
pat = re.compile('a')
pat.sub('A','abcasd')
'AbcAsd'
 pat=re.compile(r'www\.(.*)\..{3}') #正则表达式
 #在Python的string前面加上‘r', 是为了告诉编译器这个string是个raw string,不要转译反斜杠 '\' 。
 #例如,\n 在raw string中,是两个字符,\和n, 而不会转译为换行符。
 #由于正则表达式和 \ 会有冲突,因此,当一个字符串使用了正则表达式后,最好在前面加上'r'。
  #与大多数编程语言相同,正则表达式里使用"\"作为转义字符,这就可能造成反斜杠困扰。
  #假如你需要匹配文本中的字符"\",那么使用编程语言表示的正则表达式里将需要4个反斜杠"\\\\":
  #前两个和后两个分别用于在编程语言里转义成反斜杠,转换成两个反斜杠后再在正则表达式里转义成一个反斜杠。
  #Python里的原生字符串很好地解决了这个问题,这个例子中的正则表达式可以使用r"\\"表示。
  #同样,匹配一个数字的"\\d"可以写成r"\d"。
  #有了原生字符串,你再也不用担心是不是漏写了反斜杠,写出来的表达式也更直观。
  #不是说 加了r \就没有转译功能,好乱,就直接记住1句话:
  #当一个字符串使用了正则表达式后,最好在前面加上'r',这样你再也不用担心是不是漏写了反斜杠,写出来的表达式也更直观
pat.match('www.dxy.com').group(1)
'dxy'
re.sub(r'www\.(.*)\..{3}',r'\1','hello,www.dxy.com')
pat.sub(r'\1','hello,www.dxy.com') 
'hello,dxy'
# r'1' 是第一组的意思
#通过正则匹配找到符合规则的"www.dxy.com" ,取得 组1字符串 去替换 整个匹配。
 pat=re.compile(r'(\w+) (\w+)')   #正则表达式
s='hello world ! hello hz !'
pat.findall('hello world ! hello hz !')
[('hello', 'world'), ('hello', 'hz')]
pat.sub(r'\2 \1',s)        #通过正则得到组1(hello),组2(world),再通过sub去替换。即组1替换组2,组2替换组1,调换位置。 
'world hello!hz hello!'

escape(string) :对字符串里面的特殊字符串进行转义

re.escape('www.dxy.cn')
'www\\.dxy\\.cn'          #转义

上面的函数中,只有match、search有group方法,其他的函数没有。

函数的方法

group:获取子模式(组)的匹配项

pat = re.compile(r'www\.(.*)\.(.*)')    #用()表示1个组,2个组
m = pat.match('www.dxy.com')
m.group()                 #默认为0,表示匹配整个字符串  
'www.dxy.com'
m.group(1)                 #返回给定组1匹配的子字符串
'dxy'
m.group(2)
'com'

start:给定组匹配项的开始位置

m.start(2)                 #组2开始的索引
8

end:给定组匹配项的结束位置

m.end(2)                  #组2结束的索引
11

span: 给定组匹配项的开始结束位置

m.span(2)                 #组2开始、结束的索引
(8, 11)

正则表达式

正则表达式(可以称为REs,regex,regex pattens)是一个小巧的,高度专业化的编程语言,它内嵌于python开发语言中,可通过re模块使用。正则表达式的pattern可以被编译成一系列的字节码,然后用C编写的引擎执行。下面简单介绍下正则表达式的语法。

元字符

“.” :通配符,除换行符外的任意的1个字符

pat=re.compile('.')
pat.match('abc')
<_sre.SRE_Match object at 0xb72b6170>
pat.match('abc').group()
'a'                #匹配到了首个字符
pat.search('abc').group() 
'a'
pat.match('\n').group()    #换行符匹配出错
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'group'

“\” : 转义符

pat=re.compile('\.')
pat.search('abc.efg').group() #匹配到.
'.'
 pat.findall('abc.efg')     #不用group,返回列表
['.']

“[…]” : 字符集合,匹配里面的任意一个元素

>>> pat=re.compile('[abc]')
>>> pat.match('axbycz').group()
'a'
>>> pat.search('axbycz').group()
'a'
>>> pat.findall('axbycz')
['a', 'b', 'c']

“\d” : 数字

>>> pat=re.compile('\d')      
>>> pat.search('ax1by2cz3').group()  #匹配到第一个数字:1,返回
'1'
>>> pat.match('ax1by2cz3').group()  #匹配不到(首个不是)返回None,报错,match匹配字符串头
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'group'
>>> pat.findall('ax1by2cz3')     #匹配所有的数字,列表返回
['1', '2', '3']

“\D” : 非数字

>>> pat=re.compile('\D')
>>> pat.match('ax1by2cz3').group()
'a'
>>> pat.search('ax1by2cz3').group()
'a'
>>> pat.findall('ax1by2cz3')
['a', 'x', 'b', 'y', 'c', 'z']

“\s” :空白字符 、 \t、\r、\n、空格

>>> pat=re.compile('\s')
>>> pat.findall('\rax1 \nby2 \tcz3')
['\r', ' ', '\n', ' ', '\t']
>>> pat.search('\rax1 \nby2 \tcz3').group()
'\r'
>>> pat.match('\rax1 \nby2 \tcz3').group()
'\r'

“S” :非空白字符

>>> pat=re.compile('\S')
>>> pat.search('\rax1 \nby2 \tcz3').group()
'a'
>>> pat.findall('\rax1 \nby2 \tcz3')
['a', 'x', '1', 'b', 'y', '2', 'c', 'z', '3']

“\w” :单个的 数字和字母,[A-Za-z0-9]

>>> pat=re.compile('\w')
>>> pat.search('1a2b3c').group()
'1'
>>> pat.findall('1a2b3c')
['1', 'a', '2', 'b', '3', 'c']
>>> pat.match('1a2b3c').group()
'1'

“\W”:非单词字符,除数字和字母外

>>> pat=re.compile('\W')
>>> pat.findall('1a2我b3c') #python是用三字节表示一个汉字
['\xe6', '\x88', '\x91']
>>> pat.search('1a2我b3c').group()
'\xe6'

数量词

“*” :0次或多次

( 乘0会变成0)

>>> pat = re.compile('[abc]*')
>>> pat.match('abcabcdefabc').group() 
'abcabc'               #2次
>>> pat.search('abcabcdefabc').group()
'abcabc'               #2次
>>> pat.findall('abcabcdefabc')
['abcabc', '', '', '', 'abc', '']   #2次和1次,因为有0次,所以匹配了''

“+” :1次或多次

( 加0不会变成0)

>>> pat = re.compile('[abc]+')
>>> pat.match('abcdefabcabc').group()
'abc'
>>> pat.search('abcdefabcabc').group()
'abc'
>>> pat.findall('abcdefabcabc')
['abc', 'abcabc']

“?” :0次或1次,match,search 不会出现none,会出现' ‘ (因为0次也是符合的)

0次或1次不是指[xxx]这个集合,而是其中的任何的一个字符

>>> pat = re.compile('[abc]?')
>>> pat.match('defabc').group()   #0次
''
>>> pat.match('abcdefabc').group()
'a'
>>> pat.search('defabc').group()  #0次
''
>>> pat.findall('defabc')      #0次和1次
['', '', '', 'a', 'b', 'c', '']   #后面总再加个''

“数量词?” :非贪婪模式:只匹配最少的(尽可能少);默认贪婪模式:匹配最多的(尽可能多)

>>> pat = re.compile('[abc]+')     #贪婪模式
>>> pat.match('abcdefabcabc').group() #匹配尽可能多的:abc
'abc'
>>> pat.match('bbabcdefabcabc').group()
'bbabc'
>>> pat.search('dbbabcdefabcabc').group()
'bbabc'
>>> pat.findall('abcdefabcabc')
['abc', 'abcabc']
>>> pat = re.compile('[abc]+?')    #非贪婪模式:+?
>>> pat.match('abcdefabcabc').group() #匹配尽可能少的:a、b、c
'a'
>>> pat.search('dbbabcdefabcabc').group()
'b'
>>> pat.findall('abcdefabcabc')
['a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c']

“{m}” :匹配字符串出现m次

>>> pat = re.compile('[op]{2}')   #o或p出现2次
>>> pat.search('abcooapp').group() #匹配第一次出现的字符串,o比p先出现
'oo'
>>> pat.findall('abcooapp')     #匹配出现的所有字符串,列表形式返回
['oo', 'pp']

“{m,n}” :匹配字符串出现m到n次

>>> pat = re.compile('[op]{2,4}')   #o或则p出现2到4次
>>> pat.match('pppabcooapp').group() #匹配开头
'ppp'
>>> pat.search('pppabcooapp').group() #匹配第一次出现
'ppp'
>>> pat.findall('pppabcooapp')    #匹配所有
['ppp', 'oo', 'pp']

.group() #匹配第一次出现

边界

“^” :匹配字符串开头或行头

>>> pat = re.compile('^[abc]')   #开头是a、b、c中的任意一个
>>> pat.search('defabc').group()   
>>> pat.match('defabc').group()  #均找不到
>>> pat.findall('defabc')
[]
>>> pat.search('adefabc').group()
'a'
>>> pat.match('adefabc').group()  #开头是a、b、c中的任意一个
'a'
>>> pat.findall('adefabc')
['a']
>>> pat = re.compile('^[abc]+')  #开头是a、b、c中的任意一个的一次或则多次,贪婪:匹配多个
>>> pat.findall('cbadefab')
['cba']
>>> pat = re.compile(r'^[abc]+?') #开头是a、b、c中的任意一个的一次或则多次,非贪婪:匹配一个
>>> pat.findall('cbadefab')
['c']

“$” :匹配字符串结尾或则行尾

>>> pat = re.compile('[abc]$')
>>> pat.match('adefAbc').group()  #match匹配的是字符串开头,所以查找$的时,总是返回None
>>> pat.search('adefAbc').group() #结尾是a、b、c中的任意一个
'c'
>>> pat.findall('adefAbc')     
['c']
>>> pat = re.compile('[abc]+$')
>>> pat.search('adefAbc').group() #结尾是a、b、c中的任意一个的一次或则多次,贪婪:匹配多个
'bc'
>>> pat.findall('adefAbc')
['bc']

“\A”:匹配字符串开头

>>> pat = re.compile('\A[abc]+')
>>> pat.findall('cbadefab')
['cba']
>>> pat.search('cbadefab').group()
'cba'

“\Z”:匹配字符串结尾

>>> pat = re.compile('[abc]+\Z')
>>> pat.search('cbadefab').group()
'ab'
>>> pat.findall('cbadefab')
['ab']

分组

(…):分组匹配,从左到右,每遇到一个 ( 编号+1,分组后面可加数量词

>>> pat=re.compile(r'(a)\w(c)') #\w:单个的数字或字母 [A-Za-z0-9]
>>> pat.match('abcdef').group()
'abc'
>>> pat=re.compile('(a)b(c)')  #分2组,匿名分组 
                 
>>> pat.match('abcdef').group() #默认返回匹配的字符串
'abc'
>>> pat.match('abcdef').group(1) #取分组1,适用于search
'a'
>>> pat.match('abcdef').group(2) #取分组2,适用于search
'c'
>>> pat.match('abcdef').groups() #取所有分组,元组形式返回
('a', 'c')

<number>:引用编号为<number>的分组匹配到的字符串

>>> pat=re.compile(r'www\.(.*)\..{3}')
>>> pat.match('www.dxy.com').group(1)
'dxy'

“(?P<name>…)” :在模式里面用()来表示分组(命名分组),适用于提取目标字符串中的某一些部位。

>>> pat=re.compile(r'(?P<K>a)\w(c)')  #分2组:命名分组+匿名分组
>>> pat.search('abcdef').groups()    #取所有分组,元组形式返回
('a', 'c')
>>> pat.search('abcdef').group(1)    #取分组1,适用于match
'a'
>>> pat.search('abcdef').group(2)    #取分组2,适用于match
'c'
>>> pat.search('abcdef').group()    #默认返回匹配的字符串
'abc'
>>> pat.search('abcdef').groupdict()  #命名分组可以返回一个字典【专有】,匿名分组也没有
{'K': 'a'}

“(?P=name)”:引用别名为<name>的分组匹配到的串

>>> pat=re.compile(r'(?P<K>a)\w(c)(?P=K)')  #(?P=K)引用分组1的值,就是a
>>> pat.search('abcdef').group()       #匹配不到,因为完整'a\wca',模式的第4位是a
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'group'
 
>>> pat.search('abcadef').group()       #匹配到,模式的第4位和组1一样,值是c
'abca'
>>> pat.search('abcadef').groups()
('a', 'c')
>>> pat.search('abcadef').group(1)
'a'
>>> pat.search('abcadef').group(2)
'c

“<number>” :引用分组编号匹配:

>>> pat=re.compile(r'(?P<K>a)\w(c)(?P=K)\2') #\2引用分组2的值,就是c
>>> pat.findall('Aabcadef')          #匹配不到,因为完整'a\wcac',模式的第5位是c
[]
>>> pat.findall('Aabcacdef')         #匹配到,模式的第5位和组2一样,值是c
[('a', 'c')]
>>> pat.search('Aabcacdef').groups()
('a', 'c')
>>> pat.search('Aabcacdef').group()
'abcac'
>>> pat.search('Aabcacdef').group(1)
'a'
>>> pat.search('Aabcacdef').group(2)
'c'

特殊构造

(?:…) (…)不分组版本,用于使用 | 或者后接数量词
(?iLmsux) iLmsux的每个字符代表一个匹配模式,只能用在正则表达式的开头,可选多个
(?#…) #号后的内容将作为注释
(?=…) 之后的字符串内容需要匹配表达式才能成功匹配
(?!…) 之后的字符串不匹配表达式才能成功
(?(?(?(id/name) yes |no) 如果编号为id/名字为name的组匹配到字符串,则需要匹配yes,否则匹配no,no可以省略
“(?:…)” :()里面有?:表示该()不是分组

>>> pat=re.compile(r'a(?:bc)')
>>> pat.findall('abc')
['abc']
>>> pat.match('abc').groups()   #显示不出分组

“(?=…)”:匹配…表达式,返回。对后进行匹配,总是对后面进行匹配

>>> pat=re.compile(r'\w(?=\d)')  #匹配表达式\d,返回数字的前一位,\w:单词字符[A-Za-z0-9]
>>> pat.findall('abc1 def1 xyz1')
['c', 'f', 'z']
>>> pat.findall('zhoujy20130628hangzhou') #匹配数字的前一位,列表返回
['y', '2', '0', '1', '3', '0', '6', '2']
>>> pat=re.compile(r'\w+(?=\d)')
>>> pat.findall('abc1,def1,xyz1')     #匹配最末数字的前字符串,列表返回
['abc', 'def', 'xyz']
>>> pat.findall('abc21,def31,xyz41')
['abc2', 'def3', 'xyz4']
>>> pat.findall('zhoujy20130628hangzhou')
['zhoujy2013062']
>>> pat=re.compile(r'[A-Za-z]+(?=\d)')    #[A-Za-z],匹配字母,可以用其他的正则方法
>>> pat.findall('zhoujy20130628hangzhou123') #匹配后面带有数字的字符串,列表返回
['zhoujy', 'hangzhou']
>>> pat.findall('abc21,def31,xyz41')
['abc', 'def', 'xyz']

“(?!…)” 不匹配…表达式,返回。对后进行匹配

>>> pat=re.compile(r'[A-Za-z]+(?!\d)')    #[A-Za-z],匹配字母,可以用其他的正则方法
>>> pat.findall('zhoujy20130628hangzhou123,12,binjiang310') #匹配后面不是数字的字符串,列表返回
['zhouj', 'hangzho', 'binjian']
>>> pat.findall('abc21,def31,xyz41')
['ab', 'de', 'xy']

“(?<=…)”:匹配…表达式,返回。对前进行匹配,总是对前面进行匹配

>>> pat=re.compile(r'(?<=\d)[A-Za-z]+')   #匹配前面是数字的字母
>>> pat.findall('abc21,def31,xyz41')
[]
>>> pat.findall('1abc21,2def31,3xyz41')
['abc', 'def', 'xyz']
>>> pat.findall('zhoujy20130628hangzhou123,12,binjiang310')
['hangzhou']

“(?<!…)”:不匹配…表达式,返回。对前进行匹配,总是对前面进行匹配

>>> pat=re.compile(r'(?<!\d)[A-Za-z]+')   #匹配前面不是数字的字母
>>> pat.findall('abc21,def31,xyz41')
['abc', 'def', 'xyz']
>>> pat.findall('zhoujy20130628hangzhou123,12,binjiang310')
['zhoujy', 'angzhou', 'binjiang']

“(?(id/name) yes |no)”: 组是否匹配,匹配返回

>>> pat=re.compile(r'a(\d)?bc(?(1)\d)')  #no省略了,完整的是a\dbc\d ==> a2bc3,总共5位,第2位是可有可无的数字,第5为是数字
>>> pat.findall('abc9')          #返回组1,但第2位(组1)没有,即返回了''
['']
>>> pat.findall('a8bc9')         #完整的模式,返回组1
['8']
>>> pat.match('a8bc9').group()
'a8bc9'
>>> pat.match('a8bc9').group(1)
'8'
>>> pat.findall('a8bc')          #第5位不存在,则没有匹配到
[]

“(?iLmsux)”:这里就介绍下i参数:大小写区分匹配

>>> pat=re.compile(r'abc')
>>> pat.findall('abc')
['abc']
>>> pat.findall('ABC')
[]
>>> pat=re.compile(r'(?i)abc')      #(?i) 不区分大小写
>>> pat.findall('ABC')
['ABC']
>>> pat.findall('abc')
['abc']
>>> pat.findall('aBc')
['aBc']
>>> pat.findall('aBC')
['aBC']
>>> pat=re.compile(r'abc',re.I)      #re.I 作为参数使用,推荐
>>> pat.findall('aBC')
['aBC']
>>> pat.findall('abc')
['abc']
>>> pat.findall('ABC')
['ABC']

总结

以上就是本文关于Python编程之Re模块下的函数介绍的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:Python探索之静态方法和类方法的区别详解、Python探索之爬取电商售卖信息代码示例等,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

Python 相关文章推荐
python中定义结构体的方法
Mar 04 Python
Python实现删除文件但保留指定文件
Jun 21 Python
python登录并爬取淘宝信息代码示例
Dec 09 Python
详解python3中zipfile模块用法
Jun 18 Python
Python 16进制与中文相互转换的实现方法
Jul 09 Python
Python爬虫常用小技巧之设置代理IP
Sep 13 Python
Python对象与引用的介绍
Jan 24 Python
Python实现统计英文文章词频的方法分析
Jan 28 Python
python3中利用filter函数输出小于某个数的所有回文数实例
Nov 24 Python
基于Tensorflow高阶读写教程
Feb 10 Python
Python排序函数的使用方法详解
Dec 11 Python
Python+Pillow+Pytesseract实现验证码识别
May 11 Python
Python探索之静态方法和类方法的区别详解
Oct 27 #Python
Python探索之爬取电商售卖信息代码示例
Oct 27 #Python
Python 列表理解及使用方法
Oct 27 #Python
Python算法之求n个节点不同二叉树个数
Oct 27 #Python
Python探索之自定义实现线程池
Oct 27 #Python
python音频处理用到的操作的示例代码
Oct 27 #Python
彻底理解Python list切片原理
Oct 27 #Python
You might like
我的论坛源代码(八)
2006/10/09 PHP
PHP传参之传值与传址的区别
2015/04/24 PHP
PHP自定义序列化接口Serializable用法分析
2017/12/29 PHP
Jquery replace 字符替换实现代码
2010/12/02 Javascript
修复IE9&amp;safari 的sort方法
2011/10/21 Javascript
使用jQuery简单实现模拟浏览器搜索功能
2014/12/21 Javascript
JS去除iframe滚动条的方法
2015/04/01 Javascript
js和C# 时间日期格式转换的简单实例
2016/05/28 Javascript
基于Bootstrap+jQuery.validate实现表单验证
2016/05/30 Javascript
JavaScript事件学习小结(五)js中事件类型之鼠标事件
2016/06/09 Javascript
jQuery ajax中使用confirm,确认是否删除的简单实例
2016/06/17 Javascript
JS分页的实现(同步与异步)
2017/09/16 Javascript
微信小程序媒体组件详解(视频,音乐,图片)
2017/09/19 Javascript
vue项目中使用ueditor的实例讲解
2018/03/05 Javascript
vue 的keep-alive缓存功能的实现
2018/03/22 Javascript
使用vue-cli打包过程中的步骤以及问题的解决
2018/05/08 Javascript
vue以组件或者插件的形式实现throttle或者debounce
2019/05/22 Javascript
解决vue自定义全局消息框组件问题
2019/11/22 Javascript
[03:04]2018年度DOTA2玩家最喜爱的主播-完美盛典
2018/12/16 DOTA
[01:59]游戏“zheng”当时试玩会
2019/08/21 DOTA
[00:37]食人魔魔法师轮盘吉兆顺应全新至宝将拥有额外款式
2019/12/19 DOTA
Python学习资料
2007/02/08 Python
python写xml文件的操作实例
2014/10/05 Python
Python基于pillow判断图片完整性的方法
2016/09/18 Python
Python函数中的可变长参数详解
2019/09/12 Python
TensorFlow通过文件名/文件夹名获取标签,并加入队列的实现
2020/02/17 Python
Python用类实现扑克牌发牌的示例代码
2020/06/01 Python
利用CSS3实现开门效果实例源码
2016/08/22 HTML / CSS
巴西24小时在线药房:Droga Raia
2020/05/12 全球购物
索引覆盖(Index Covering)查询含义
2012/02/18 面试题
路政管理专业推荐信
2013/11/11 职场文书
大学生思想汇报范文
2013/12/31 职场文书
公司门卫的岗位职责
2014/02/19 职场文书
初中优秀班集体申报材料
2014/05/01 职场文书
幼儿园老师新年寄语2015
2014/12/08 职场文书
Python将CSV文件转化为HTML文件的操作方法
2021/06/30 Python