python学习笔记(五)文件操作、正则表达式
2017-04-20 22:45
776 查看
文件操作
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 codecs with 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 re def 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基础学习笔记(三) 文件、time和正则表达式
- LAMP兄弟连原创视频教程(PHP笔记四--正则表达式,文件,目录操作)
- python学习笔记: 一些有用的文件操作函数
- Python学习笔记(十):Python正则表达式
- Python学习笔记--正则表达式,re模块
- Python 正则表达式之 补充学习笔记
- python学习笔记 目录和文件操作
- python 学习笔记 10 -- 正则表达式
- Python 学习笔记——文件对象和操作
- Linux 学习笔记 -- 第三部分 学习 shell 与 shell script -- 第12章 正则表达式与文件格式化处理
- 基于python的正则表达式学习笔记
- python 系统学习笔记(八)---文件操作
- python 系统学习笔记(十五)---正则表达式
- python 学习笔记(5)用户自定义类正则表达式
- 基于python的正则表达式学习笔记
- python学习笔记(一)-文件操作
- python的正则表达式学习笔记
- Python学习笔记 第二部分 - 正则表达式 与 爬虫小实例(抓取豆瓣电影中评分大于等于8分的影片)
- 【学习笔记——Linux】Linux正则表达式和文件格式化处理