毕设知识点总结——part1.分词

  • 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])]
    为每列不为零的元素的个数组成的列表


Python中的join()函数的用法

函数: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'

python模块之codecs: 自然语言编码转换

#-*- encoding: gb2312 -*-
import codecs, sys
# 用codecs提供的open方法来指定打开的文件的语言编码,它会在读取的时候自动转换为内部unicode
bfile = codecs.open("dddd.txt", 'r', "big5")
#bfile = open("dddd.txt", 'r')

ss = bfile.read()
bfile.close()
# 输出,这个时候看到的就是转换后的结果。如果使用语言内建的open函数来打开文件,这里看到的必定是乱码
print ss, type(ss)

两种读取txt文件有多少行的办法:

f = open('stopwords.txt','r')
lines = f.readlines()
f.close()
n=0
for line in lines:
    n = n+1
print(n)

或者

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

(更好的办法)

python排序 sorted(key=lambda)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值