python正则表达式(下)

正则表达式

方法

方法描述返回值
compile(pattern, flags=0)根据包含正则表达式的字符串创建对象re对象
search(pattern, string, flags=0)在string中查找第一个匹配到的对象或None
match(pattern, string, flags=0)在string开始处匹配在string开始匹配到的对象或者None
findall(pattern, string, flags=0)列出string的所有匹配项所有匹配到的string列表
sub(pattern, repl, string, count=0, flags=0)将string中所有的pattern匹配项用repl替换完成替换后的新string
split(pattern, string, maxsplit=0,flags=0)根据匹配项来分割string分割后的string列表
finditer(pattern, string, flags=0)将string的所有匹配项变成迭代器迭代器对象

compile方法 —— 编译正则表达式

  • 用法:
    变量 = compile(pattern, flags=0)
    变量.方法
  • compile方法是编译一个正则表达式对象
x = re.compile(r'a-z')
print(x)	# re.compile(r'a-z')

match方法

  • 用法:
    re.match(pattern, string, flags=0)
    pattern是正则表达式的模块
    string是表示要匹配的数据
    flags是标志位,用于控制正则表达式的匹配方式。如:是否区分大小写、是否多行匹配等
  • 如果匹配成功返回match对象,否则返回一个None
  • 只匹配从头开始的数据,否则返回None

search方法

  • 用法:
    re.search(pattern, string, flags=0)
  • 匹配成功返回match对象,否则返回一个None
  • 在字符串中搜索第一次出现正则表达式的位置

findall方法

  • 用法:
    re.findall(pattern, string, flags=0)
  • 匹配成功返回一个有数据列表,否则返回一个空列表
  • 在字符串中找到所有匹配的内容

split方法

  • 用法:
    re.split(pattern, string, maxsplit=0,flags=0)
  • 用pattern将string多次分隔,maxsplit参数为分隔次数,并返回一个列表
  • 如果为匹配到pattern,则返回一个原字符串列表
  • 在字符串中找到所有匹配的内容并将字符串按照匹配的内容分隔
re.split(r'[a-z]','0A1B2C3D4')				 # ['0A1B2C3D4']
re.split(r'[a-z]','0A1B2C3D4',flags = re.I)	# ['0', '1', '2', '3', '4']
re.split(r'[A-Z]','0A1B2C3D4',maxsplit=2)	# ['0', '1', '2C3D4']

sub方法

  • 用法:
    re.sub(pattern, repl, string, count=0, flags=0)
  • 将string中所有的pattern匹配项用repl替换,并返回新字符串
  • 如果string中没有匹配的pattern,则返回原字符串
  • count参数为替换次数,且必须为非负整数
re.sub(r'[a-h]','z','0A1B2C3D4')			# '0A1B2C3D4'
re.sub(r'[A-H]','z','0A1B2C3D4')			# '0z1z2z3z4'
re.sub(r'[A-H]','z','0A1B2C3D4',count=2)	# '0z1z2C3D4'

编译标志 —— flag匹配模式

匹配模式含义
re.A,re.ASCII使预定义字符集(如:\w, \s, \d等)只匹配ASCII字符
re.I,re.IGNORECASE忽略大小写匹配
re.L,re.LOCALE由当前语言区域决定大小写\w, \b的敏感匹配
re.M,re.MULTILINE多行匹配,影响’ ^ ‘和’ $ ’
re.S,re.DOTALL使( . )匹配任意字符,包括换行符
re.X,re.VERBOSE允许编写更具可读性、更友好的正则表达式

分组 —— ()字符

  • 概念 —— 就是已经匹配到的内容里面再次筛选小括号中的正则表达式,或者指定一个子组的开始和结束位置
test = 'apple is $30, banana is $20'
result = re.search(r'.+(\$\d+).+(\$\d+)',test)
result.group()			# 'apple is $30, banana is $20'
result.group(0)			# 'apple is $30, banana is $20'
result.group(1)			# '$30'
result.group(2)			# '$20'
result.groups()			# ('$30', '$20')

CSV模块

  • 概念 —— 常用的文本格式,用以存储表格数据(包括数字或字符),专门处理csv文件的读写操作

写入csv文件

常用方法

方法含义数据类型
writerow写入单行输数据(需配合遍历使用)列表或元组
writerows写入多行数据列表或元组
  • 用法:
    1. 变量 = csv.write(csvfile, dialect=‘excel’, **fmtparams)
      变量.writerow(数据)
    2. 变量 = csv.DictWriter(f, fieldnames, restval=’’, extrasaction=‘raise’, dialect=‘excel’, *args, **kwds) —— fieldnames参数是由键组成的序列
      变量.writeheader() —— 单独表头的写入(写入fieldnames参数数据)
      变量.writerows(数据)

读取csv文件

  • 用法:
    1. 变量 = csv.reader(csvfile, dialect=‘excel’, **fmtparams)
      遍历读取
    2. csv.DictReader(f, fieldnames=None, restkey=None, restval=None, dialect=‘excel’, *args, **kwds) —— 返回类型为OrderedDict
      遍历读取
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值