1.解决一些乱码问题
Import sys
Import re
reload(sys)
sys.setdefaultencoding('utf8')#line1to5istosetutf-8inordertoavoidingUnicodeDecodeError:'ascii'codeccan'tdecodebyte0xe7inposition3:ordinalnotinrange(128)
2.
from collections import defaultdict
这个包相当于 dict 但是他在添加 key 的时候不用判断是否已经存在,可以直接写 d[key]+=1
,据说效率也会高(童靴亲测,效率爆高)
3.
pattern = re.compile('[^a-z0-9]')
python 正则 import re
可以用pattern.search(str)
或pattern.match(str)
4.
for parent, folds, files in os.walk("ICML/ICML"):
用这个循环可以递归的访问某个文件夹的所有文件
5.
with open(os.path.join("result", f_name), 'w') as fout:
读文件时用这个
with as
可以自动打开关闭文件对象
6.
for i,w in enumerate(words):
用这个遍历 words 里的元素,其中 i 是位置 w 是元素
7.
新建一个空的 set 可以d=set()
两个 set 的并可以写作d | d2
8(巨坑一点)
list.sort()不返回任何值,排序后的结果还在 list 中,自定义的话可以写 cmp 函数
def cmp(p1,p2):
str1 = p1.pattern
str2 = p2.pattern
if len(str1)>len(str2):
return -1
elif len(str1)<len(str2):
return 1
else:
return 0
这是按照 len 从大到小的顺序排序的
9.
str.strip()
可以去除 str 首尾的空白部分
10.关于正则表达式的一点
.*([a-z])\1ing
()
是捕获组
\1
是取第一个(第几个是看第几个括号)
这个正则的意思是两个相同的字母 e.g 可以匹配 swimming 不能匹配 swimxing
11.
isinstance(newword,list)
判断是否是某种类型
12.
使用 numpy 时,如需算 log 请用np.log10()
等,不要用np.log(balabala,10)
13.
多用这种表达式来替代循环
word=[w for w in tokens if not w in stopWord]
14.
numpy 算矩阵乘法,如果用a*b
则是对应元素相乘,矩阵乘法要用dot(a,b)
15.编码问题
1>python中的编码都是unicode
2>如果你读的文件是gbk,读入的时候需要成unicode
xx.decode("gbk")
3>unicode编码的中文是可以直接输出的,如果你用[w for w in list]
或print list
则不会输出中文,估计是[]
的问题。
16.字符串前面+r
在打开文件的时候open(r’c:….’)
加r和不加”r是有区别的
‘r’是防止字符转义的 如果路径中出现’\t’的话 不加r的话\t就会被转义 而加了’r’之后’\t’就能保留原有的样子
另外;字符串赋值的时候 前面加’r’可以防止字符串在时候的时候不被转义 原理是在转义字符前加’\’
注:摘抄自http://blog.csdn.net/chenzy945/article/details/10235661 感谢原博主
ps:欢迎交流,随缘更新!