Sequence类型 Sequence是Python的一种内置类型(built-in type),内置类型就是构建在Python Interpreter里面的类型,三种基本的Sequence Type是list(表),tuple(定值表,或翻译为元组),range(范围)。可以看作是Python Interpreter定义了这样三个class。 字符串也是一种序列。
RuntimeError: NLPIR function ‘NLPIR_Init’ failed. 说明 pynlpir的library的授权过期了解决方法 可到github上下载新的授权:https://github.com/NLPIR-team/NLPIR/tree/master/License,并将新的授权放到data文件夹下,并重启项目,再次测试分词程序,分词成功。 我用到的是分词的功能,提供分词的license for a month 一个月的有效期,如果失效再去网上下载新的授权覆盖源文件即可 NLPIR.user 注意一定要用正确的方式下载!
pynlpir, nlpir 的python端接口, 通过python 使用nlpir / ictclas 2015 如果有pip 的话,直接pip install pynlpir #最新版本在4.0 项目地址在https://github.com/tsroten/pynlpir;
有时候list index out of range的意思不是列表存不下了,是对应列表的编号不存在而已
定义了空列表后不能对其索引 ,如: content = [] for i in range(1,3): content[i] = table.cell(i, 5) #会报错 在python2.7下,将字符串写入到文件时会出现”UnicodeEncodeError: ‘ascii’ codec can’t encode character u’\xa0’ in position”的错误,原因是由于python基于ASCII处理字符的,当出现不属于ASCII的字符时,会出现错误信息。 解决: 指定文件字符集为utf-8 在文件头部加入以下代码: import sys reload(sys) sys.setdefaultencoding('utf-8') Python strip() 方法用于移除字符串头尾指定的字符(默认为空格)。 语法 strip()方法语法: str.strip([chars]);dict.items()方法返回字典的(键,值)元组对的列表python中的os.path.join()是在拼接路径的时候用的 os.path.join(“home”, "me", "mywork") 在Linux系统上会返回 “home/me/mywork" 在Windows系统上会返回 "home\me\mywork" 好处是可以根据系统自动选择正确的路径分隔符”/”或”\” docs_matrix.shape[1] 读取二维矩阵docs_matrix的第二维度Docs_matrix= [[ 0. 0. 0. ..., 0. 0. 0.] [ 0. 1. 0. ..., 13. 0. 0.] [ 0. 0. 4. ..., 0. 0. 2.] [ 0. 0. 0. ..., 0. 0. 0.] [ 1. 0. 0. ..., 0. 0. 0.]] 则 docs_matrix[:,2] =[ 0. 0. 0. 4. 0. 0.] 相当于第三列np.nonzero(docs_matrix[:, 2]) (array([3], dtype=int64),) nonzeros(a)返回数组a中值不为零的元素的下标,本例中为第四行第三列的元素4的列的下标,它的返回值是一个长度为a.ndim(数组a的轴数)的元组,元组的每个元素都是一个整数数组,其值为非零元素的下标在对应轴上的值。 所以np.nonzero(docs_matrix[:, 2])[0]即为第3列不为零的元素的下标 len(np.nonzero(docs_matrix[:, i])[0])即为第i列中不为零的元素的个数`column_sum = [float(len(np.nonzero(docs_matrix[:, i])[0])) for i in range(docs_matrix.shape[1])]
x = [1 for i in range(n)]` 是n个1组成的列表 [1,1,…] 和 x = [1] * n 一个效果
所以column_sum = [float(len(np.nonzero(docs_matrix[:, i])[0])) for i in range(docs_matrix.shape[1])]为每列不为零的元素的个数组成的列表
函数:string.join()
Python中有join()和os.path.join()两个函数,具体作用如下: join(): 连接字符串数组。将字符串、元组、列表中的元素以指定的字符(分隔符)连接生成一个新的字符串 os.path.join(): 将多个路径组合后返回
一、函数说明 1、join()函数
语法: ‘sep’.join(seq)
参数说明 sep:分隔符。可以为空 seq:要连接的元素序列、字符串、元组、字典 上面的语法即:以sep作为分隔符,将seq所有的元素合并成一个新的字符串
返回值:返回一个以分隔符sep连接各个元素后生成的字符串
2、os.path.join()函数
语法: os.path.join(path1[,path2[,……]])
返回值:将多个路径组合后返回
注:第一个绝对路径之前的参数将被忽略
#对序列进行操作(分别使用' '与':'作为分隔符) >>> seq1 = ['hello','good','boy','doiido'] >>> print ' '.join(seq1) hello good boy doiido >>> print ':'.join(seq1) hello:good:boy:doiido #对字符串进行操作 >>> seq2 = "hello good boy doiido" >>> print ':'.join(seq2) h:e:l:l:o: :g:o:o:d: :b:o:y: :d:o:i:i:d:o #对元组进行操作 >>> seq3 = ('hello','good','boy','doiido') >>> print ':'.join(seq3) hello:good:boy:doiido #对字典进行操作 >>> seq4 = {'hello':1,'good':2,'boy':3,'doiido':4} >>> print ':'.join(seq4) boy:good:doiido:hello #合并目录 >>> import os >>> os.path.join('/hello/','good/boy/','doiido') '/hello/good/boy/doiido'或者
count = len(open(r"stopwords.txt",'rU').readlines()) print count(适用于文件比较小时) 或者
count1 = -1 for count1, line in enumerate(open(r"stopwords.txt", 'rU')): pass count1 += 1 print count1(适用于文件比较大) 或者
count1 = 0 thefile = open(r"stopwords.txt", 'rb') while True: buffer = thefile.read(1024 * 8192) if not buffer: break count1 += buffer.count('\n') thefile.close() print count1(更好的办法)
