306_python_模块3_re_file
【摘要】 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)