python文本处理

来源:互联网 发布:自学编程的方法 编辑:程序博客网 时间:2024/06/01 08:49

杂货

文本处理的三种操作:
1.解析数据并将数据放入程序内部的结构中
2.将数据以某种方式转换为另一种相似的形式,数据本身发生了改变
3.生成全新的数据

python类型检查方法:鸭子判断法
如果他走路像鸭子,叫声也像鸭子,那么对于我们的应用而言,就可以认为他是鸭子了。

python检错方式被称为事后原谅法(EAFP) try/except

python字符串拼接
python中字符串对象是无法改变的 所以任何字符串的操作都会产生一个新的对象 使用+=拼接会产生数量级个中间结果,所以最终的时间复杂度和字符串平方相关 使用join键入列表会免去中间的缓冲,只会产生一个字符的拷贝用于拼接

闭包
1。缓存 闭包总存在在内存中 不会自动释放 对于一些操作需要大量时间的函数可以保存下来
2。封装 实现数据的封装 使用闭包可以访问私有变量
3。面向对象中的单例模式

被绑定方法
如果一个python对象提供一个方法,可以直接获得一个已经绑定到该对象的方法,从而直接使用此方法。

总是在IO动作的关口做转换

python

”’ 多行链接
r/R 原生字符串
u/U 原字符串

字符串是无法改变的 进行操作时只是新建了一个新的字符串对象

字符串的切片
[-x:] 从末尾向前
切片扩展第三个参数 作为切片的步长 用于判断正向和反向

splitlines 分割多个单行字符串并置于列表中

ord() 字符转换成ASCII码
chr() ASCII码转换成字符

提取空格的正则表达式 r’(\s+)’
使用括号后默认保留了分割符
?:可以去掉某个符号

struct 中pack和unpack的使用
传入数据必须是byte形式
string 和 byte可以通过str() bytes()两种方法进行转化

zip
是一个表项合并函数 在python3中最后生成一个迭代对象 最后使用内建的list就可以 b
在 for循环中不存在这个问题

带列表推导LC
eg: fivers = [theline[k:k+5] for k in xrange(0, len(theline), 5)]

一种构建多引号的奇妙做法
market = ‘”’
b = ‘i love you’
b.join(market * 2)

PYTHON

shell 上运行 import this 便可查看

The Zen of Python, by Tim Peters
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren’t special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one– and preferably only one –obvious way to do it.
Although that way may not be obvious at first unless you’re Dutch.
Now is better than never.
Although never is often better than right now.
If the implementation is hard to explain, it’s a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea – let’s do more of those!