python学习笔记(五)文件操作、正则表达式
来源:互联网 发布:io域名广东备案 编辑:程序博客网 时间:2024/06/05 02:28
文件操作
python的文件IO操作和C++类似,都是流的形式。
fin = open('code.txt','r')fout = open('output.txt','w')
在c++中,每次打开文件后都需要判断打开是否成功,否则一旦读取出错程序就会终止,此外,读写操作完之后还需要调用close关闭文件。在python中也不例外,但是有比较方便的with语句来帮助完成这些操作:
with open('code.txt')as fin: print fin.read()
在python中读写文件都是一次性的(至少在语句上是这样),如上read()语句将直接读出code中的所有内容。
with open('output.txt')as fout: fout.write(data)
读文件时有时会遇到编码的问题,python使用的是unicode编码。通常对读出的内容使用decode(类型)来转换。
此外还有更简洁的方式,使用codecs库:
import codecswith codecs.open('code.txt','r','gbk')as fin: fin.read()
正则表达式
正则表达式是专用于操作字符串的工具。关于正则表达式需要不断使用、查书、使用才能学会。
这里用之前的NC代码编译器作为例子,来探索python中的正则表达式使用方法。
模式
模式表达了需要的字符串的。
模式表达方法:
pattern_str = r'^N(\d+)(\s+([GNXYZMTSF])[+-]?(\d+))+;'
组
在模式中,()括起来的内容属于一组,每当匹配一个,组就增加一个。
匹配
匹配一个字符串,有两种方式,一是使用re模块中提供的方法进行匹配,二是建立一个模式对象,使用其方法进行匹配。
m1 = re.match(r'^N(\d+)(\s+([GNXYZMTSF])[+-]?(\d+))+;',str)pattern2 = re.compile(r'^N(\d+)(\s+([GNXYZMTSF])[+-]?(\d+))+;')m2 = pattern2.match(str)m3 = pattern2.search(str)m4 = pattern2.findall(str)
第一种方法适合只匹配一次的情况,pattern2适合于需要不断使用该模式的情况,使用match是对字符串从第一个字符开始匹配,使用search是在字符串中查询符合模式的子串(都只匹配一次);使用findall是匹配所有符合模式的子串(匹配多次)。
查看结果
使用match()或者search()方法匹配成功,m非None,可以对其匹配结果进行查看,group为其匹配的第一个符合的串,groups为其所有匹配的组。
if(m): print m.group() print m.groups()
使用findall()得到的m是一个列表,其中每一项是一个元组,包含匹配的每一组的字符串。
切分
re中提供的split方法可以按照一个模式将字符串切分成多个字符串,使用方法见下面的例子。
一个例子
import redef NC(str): pattern = re.compile(r'^N(\d+)(\s+([GNXYZMTSF])[+-]?(\d+))+;') strs = re.split(r'\n',str) for s in strs: m = pattern.match(s) if(m): print m.groups()with codecs.open('code.txt','r')as f: NC(f.read())
这里的结果并不如预期的匹配所有数字以及地址符,字符串匹配成功,但组只有四组,只得到了最后一组的内容。说明这种组的方法所匹配的组数是固定的(括号对的个数)。
参考资料:
廖雪峰教程:
http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001386832260566c26442c671fa489ebc6fe85badda25cd000
python正则表达式:
http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html
- python学习笔记(五)文件操作、正则表达式
- Python学习笔记(五)正则表达式
- python学习笔记(五):正则表达式
- PHP学习笔记(五)正则表达式
- python学习笔记(五)正则表达式的基本语法和re模块API
- python学习笔记(四)正则表达式
- python学习笔记二(正则表达式)
- Python之学习笔记(正则表达式)
- python正则表达式学习笔记(上)
- python学习笔记21(正则表达式)
- Python学习笔记57(正则表达式)
- Python 学习笔记 正则表达式
- 【Python学习笔记】正则表达式
- Python 学习笔记-正则表达式
- python正则表达式学习 笔记
- Python 正则表达式学习笔记
- Python爬虫学习纪要(五):正则表达式2
- python学习之(五)正则表达式
- 异常:Can't load AMD 64-bit .dll on a IA 32-bit platform
- 二十二、Spring Boot中使用Redis缓存
- Algorithm Gossip (END)
- 参演的作品番号PPPD-554
- 51Nod 1042 数字0-9的数量 (数位DP
- python学习笔记(五)文件操作、正则表达式
- SQL两级左连接
- 关于win7下RemoveDPC学习到的一点东西
- Java基础之运算符(算数运算符和赋值运算符)
- LINK : fatal error LNK1168
- javaweb 基础(1)—— servlet
- 写时复制Copy-On-Write
- JAVA多线程—传统线程机制-运行Thread.run()还是Runnable.run()
- 随机森林(Random Forest)入门与实战