1、Python argparse Python和命令行之间的交互
第一次看argparse的工程代码闹了一个乌龙,我在编译器运行老是报错,后来才知道 他是需要在cmd下运行才行。
参考博客:博客
2、re:正则表达式语法
百度百科解释视频
正则表达式match/search/findall/sub/split 等用法
import re
name = "abC123 efg"
name1 = "123abcD234"
name2 = "123 abcd 456 efgh 789"
# match 是从头开始匹配,但只匹配一次
pattern1 = re.compile("[a-z]+", re.S|re.I)
print(pattern1.match(name).group())
# search 是从任意位置匹配,仅匹配一次
pattern2 = re.compile("[a-z]+", re.S|re.I)
print(pattern2.search(name1).group())
# findall 查找符合正则的内容,返回所有结果 list
pattern3 = re.compile("\d+", re.S|re.I)
print(pattern3.findall(name1))
# sub替换字符串
pattern4 = re.compile("\d+", re.S|re.I)
print(pattern4.sub("*", name1))
# split拆分
pattern5 = re.compile(" ")
print(pattern5.split(name2))
1、findall:
头文件:
import re
元 字符:参考博客
代码1:
import re
ans = re.findall("abc\b","adsssa abc ")
print(ans)
ans = re.findall(r"abc\b","adsssa abc ")
print(ans)
r:rawstrinig 代表是原生字符串,如果不加r,第二行代码无法识别出 \b 的功能(匹配空字符串)
代码二:匹配带o的所有字符
import re
def main():
content = 'Hello, I am Jerry, from Chongqing, a mountain city, nice to meet you……'
regex = re.compile('\w*o\w*')
x = regex.findall(content)
print(x)
if __name__ == '__main__':
main()
# ['Hello', 'from', 'Chongqing', 'montain', 'to', 'you']
re.compile():定义规则
搭配findall或match最佳
2、match
(1.re.match函数
re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回None。
(1)函数语法:
re.match(pattern, string, flags=0)
函数参数说明:
pattern 匹配的正则表达式
string 要匹配的字符串
flgs 标志位,用于控制正则表达式的匹配方式
我们可以使用group(num) 或 groups() 匹配对象函数来获取匹配表达式。
group(num=0) 获取匹配结果的各个分组的字符串,group() 可以一次输入多个组号,此时返回一个包含那些组所对应值的元组。
groups() 返回一个包含所有分组字符串的元组。
注意:如果未匹配成功,match()返回值为None,此时再使用group()、groups() 方法会报错。
应该先获取匹配对象,然后判断匹配对象是否非空,当非空时在使用group()、groups() 方法获取匹配结果。见实例2
re.match 与patter.match 的区别
patter.match可以在后方指定 搜索 开始的位置和结尾的位置
re.search 和patter .search类似
patter = re.compile("\w+")
print(patter.match(string,0,3).span())
print(re.match("\w+",string).span())
(2)实例
例1
import re
print(re.match(r'How', 'How are you').span()) # 在起始位置匹配
print(re.match(r'are', 'How are you')) # 不在起始位置匹配
以上输出结果为:
(0, 3)
None
例2
import re
content = '577 zeke'
result = re.match(r'[a-z]\d' , content)
if result:
print result.group()
else:
print 'No match!'
以上执行结果如下:
No match!
(2.pattern.match方法
(1) 函数语法
pattern.match( string, pos=0, endpos=len(string))
函数作用:
这个方法将在字符串string的pos位置开始 尝试匹配pattern(pattern就是通过 re.compile()方法编译后返回的对象),如 果pattern匹配成功,无论是否达到结束位 置endpos,都会返回一个匹配成功后的 Match对象;
如果匹配不成功,或者 pattern未匹配结束就达到endpos,则返回 None。
函数参数说明:
string:被匹配的字符串
pos:匹配的起始位置,可选,默认为0
endpos:匹配的结束位置,可选,默认为 len(string)
(3. re.match和pattern.match区别
re.match方法与pattern.match()方法 区别在于,它不能指定匹配的区 间pos和endpos两个参数