306_python_模块3_re_file

举报
alexsully 发表于 2022/03/03 00:48:52 2022/03/03
【摘要】 re 正则表达式1. 字符相关2. 数量相关3. 括号-单独返回括号内的匹配结果格式import re re.findall("re规则","文本")1 字符相关`alexsully` 匹配文本中的alexsully`[abc]` 匹配a或b或c字符`[^abc]` 匹配除了abc以外的其他字符。`[a-z]` 匹配a~z的任意字符( [0-9]也可以 )。 [A-Z] `.`...

re 正则表达式

1. 字符相关
2. 数量相关
3. 括号-单独返回括号内的匹配结果
格式

import re 
re.findall("re规则","文本")


1 字符相关

`alexsully` 匹配文本中的alexsully
`[abc]`     匹配a或b或c字符
`[^abc]`   匹配除了abc以外的其他字符。
`[a-z]`  匹配a~z的任意字符( [0-9]也可以 )。 [A-Z]
 `.`  代指除换行符以外的任意字符
 `\w` 代指字母或数字或下划线(汉字)
 `\d` 代指数字


import re

text = "你2b好wupeiqi,阿斯顿发awupeiqasd 阿士大夫a能接受的wffbbupqaceiqiff"
data_list = re.findall("[abc]", text)
 print(data_list) # ['b', 'a', 'a', 'a', 'b', 'b', 'c']


2 数量相关

 `*` 重复0次或更多次
 `+` 重复1次或更多次
 `?` 重复0次或1次
 `{n}` 重复n次
 `{n,}` 重复n次或更多次
 `{n,m}` 重复n到m次


  text = "alexraotrootadmin"
  data_list = re.findall("r.+o", text) # 贪婪匹配
  print(data_list) # ['raotroo']  
 
   text = "alexraotrootadmin"
  data_list = re.findall("r.+?o", text) # 非贪婪匹配
  print(data_list) # ['rao']
 

 

3.括号
分组功能1:提取数据区域

import re

text = "dsf130429191912015219k13042919591219521Xkk"
data_list = re.findall("\d{17}[\dX]", text) # [abc]
print(data_list) # ['130429191912015219', '13042919591219521X']

分组功能2:获取指定区域 + 或条件

import re

text = "楼主15131root太牛15131alex逼了,在线想要 442662578@qq.com和xxxxx@live.com谢谢楼主,手机号也可15131255789,搞起来呀"
data_list = re.findall("(15131(2\d{5}|r\w+太))", text)
print(data_list)  # [('15131root太', 'root太'), ('15131255789', '255789')] 


text = "楼主太牛逼了,在线想要 442662512@qq.com和xxxxx@live.com谢谢楼主,手机号也可15131251189,搞起来呀"
email_list = re.findall("[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+\.[a-zA-Z0-9_-]+", text, re.ASCII)
print(email_list) # ['442662578@qq.com', 'xxxxx@live.com']
    


2 文件操作

三个动作:打开,操作,关闭

1 打开模式

f1 = open("db.txt",mode='rb')
f1 = open("db.txt", mode='wb')
f1 = open("db.txt", mode='ab')
f1 = open("db.txt", mode='ab')
with open(file_path, "r+") as f:   #打开一个文件用于读写。文件指针将会放在文件的开头。

对文本文档的内容做操作,那么Python可以帮助你自动实现字符串和字节的转换
f1 = open("db.txt",mode='r', encoding='utf-8')
f1 = open("db.txt", mode='w', encoding='utf-8')
f1 = open("db.txt", mode='a', encoding='utf-8')
data = f1.write("程松")
f1.close()

2 操作
写write

  f1 = open("new.txt", mode='w', encoding='utf-8')
  while True:
      text = input(">>>")
      line = "{}\n".format(text)
      data = f1.write(line)
      f1.flush()
      


读,read

f1 = open("new.txt", mode='r', encoding='utf-8')
data = f1.read() # 读所有

for item in f1:   # 按行读
    print(item.strip())
f1.close()


total_size = os.stat("new.txt").st_size # 查看文件大小
print(total_size)

# rb 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。
f1 = open("new.txt", mode='rb')  
f1.read(3)

3 关闭文件

f1.close()
with open("db.txt", mode='a', encoding='utf-8') as f1: # 自动关闭
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。