一、字符串操作
去空格及特殊符号
s = ' hello, world!' #默认把左右空格去掉 print s.strip() print s.lstrip(' hello, ') print s.rstrip('!')
查找字符
# < 0 为未找到 sStr1 = 'strchr' sStr2 = 'tr' #找到返回目标子串开始下标 nPos = sStr1.index(sStr2) print nPos
大小写:upper()和lower()方法
删除字符串:分片的方式
比价字符串:cmp()
分割
s = 'ab,cde,fgh,ijk' print(s.split(','))
二、正则表达式
https://regexr.com/验证网站,翻墙进
https://alf.nu/RegexGolf练习网站
字符:
.:匹配除换行符外所有字符
d:所有数字
D:所有除数字外所有字符
s:空格、table键、换行
S:除掉所有空格、table键、换行外所有
w:数字,字符和下划线(大小写都有)
对应大写都是除掉小写对应的规则的字符,即反规则
数量词:
{n}:找到两个对应前边规则的字符
{m,n}找到m-n个前边规则的字符:d{2-4}找到长度为2到4的连续数字串
?:前边规则出现1次或者0次的:and?:an或者and都可以
*:匹配到前边规则结束,即0到无限个,abc*:abc或者abccccccc或者ab
+:1到无限个
用括号可以表示规则组合:(ab)*:ababababab
[]:中括号里表示想要的字符[abc]:想要a和b和c [a-g]:想要a-g的
边界词:
^:后边跟规则,代表以xx开头的
$:前边加规则,代表以xx结尾:^ab$:以a开头,b结尾的
|:前后都加规则,代表或者
python中正则表达式模块:re
使用re的一般步骤是
- 1.将正则表达式的字符串形式编译为Pattern实例
- 2.使用Pattern实例处理文本并获得匹配结果(一个Match实例)
- 3.使用Match实例获得信息,进行其他的操作。
# encoding: UTF-8 import re # 将正则表达式编译成Pattern对象,格式是r'模式串' pattern = re.compile(r'hello.*!') # 使用Pattern匹配文本,获得匹配结果,无法匹配时将返回None match = pattern.match('hello, hanxiaoyang! How are you?') if match: # 使用Match获得分组信息 print match.group()
三、jieba中文处理
3.1基本分词函数与用法
jieba.cut函数:
- 需要分词的字符串
- cut_all 参数用来控制是否采用全模式
- HMM 参数用来控制是否使用 HMM 模型
jieba.cur_for_search方法接受两个参数
- 需要分词的字符串
- 是否使用 HMM 模型。
# encoding=utf-8 import jieba seg_list = jieba.cut("我在学习自然语言处理", cut_all=True) print seg_list print("Full Mode: " + "/ ".join(seg_list)) # 全模式 seg_list = jieba.cut("我在学习自然语言处理", cut_all=False) print("Default Mode: " + "/ ".join(seg_list)) # 精确模式 seg_list = jieba.cut("他毕业于上海交通大学,在百度深度学习研究院进行研究") # 默认是精确模式 print(", ".join(seg_list)) #cut_for_search的划分粒度很细 seg_list = jieba.cut_for_search("小明硕士毕业于中国科学院计算所,后在哈佛大学深造") # 搜索引擎模式 print(", ".join(seg_list))
添加用户自定义词典
针对自己的场景,可能会有一些领域内的专有词汇
- 1.可以用jieba.load_userdict(file_name)加载用户字典
- 2.少量的词汇可以自己用下面方法手动添加:
- 用 add_word(word, freq=None, tag=None) 和 del_word(word) 在程序中动态修改词典
- 用 suggest_freq(segment, tune=True) 可调节单个词语的词频,使其能(或不能)被分出来。
关键词提取:
1.基于TF-IDF算法的关键词提取
jieba.analyse.extract_tags(sentence,topK=n,withWeight = False,allowPOS=())
- sentence 为待提取的文本
- topK 为返回几个 TF/IDF 权重最大的关键词,默认值为 20
- withWeight 为是否一并返回关键词权重值,默认值为 False
- allowPOS 仅包括指定词性的词,默认值为空,即不筛选
import jieba.analyse as analyse lines = open('NBA.txt').read() print " ".join(analyse.extract_tags(lines, topK=20, withWeight=False, allowPOS=()))