由于朋友需要做文本分析,前提是要将文本中的名词和动词剔除掉,但没有现成的名词和动词的txt格式的词典。于是找来了一个英汉词典,根据每一行出现的adj、adv、n、prep等,使用正则表达式匹配需要的词性,并将其追加写入到txt文件中。
建议大家使用python3.5,3的优点是避免了很多编码问题。3代表着python的未来,大家还是应该多多的对未来投资。
比如,我要生成形容词的词典。步骤:
1、应先使用正则表达式,匹配含有‘adj’的行字符串,返回的是list。
2、获得adj结尾处的索引值
3、对行字符串进行切片处理,获得索引值后的全部字符
4、如果获得的字符串有 ‘,’ 那再用正则表达式,匹配中文字符,获得的是中文的list
代码实现如下:
import re
strs = open(r'C:/Users/myl/Desktop/SegChineseToWords/英汉词典TXT格式.txt','r',encoding='utf-8').readlines()
for str in strs:
# 形容词典
adj_re = re.search('adj', str)
if adj_re != None:
adj_num = adj_re.end()+1
adj_str = str[adj_num:]
adj_list = re.findall("[\u4e00-\u9fa5]+", adj_str)
for ele_adj in adj_list:
ele_adj = ele_adj + '\n'
with open(r'C:/Users/myl/Desktop/SegChineseToWords/Dict/adj_dict.txt', 'a+',encoding='utf-8') as f:
f.write(ele_adj)
实现的效果如下图:
本代码中用到 re模块 的 research方法 ,具体大家去百度下,这个方法的相关知识。
现在附上 练习材料和最终代码,大家可以比照着练习下正则。
欢迎关注公众号:大邓带你玩转python
----------------------------------作者:邓旭东
欢迎关注 简书账号 邓旭东HIT
知乎: 邓旭东HIT
微信公众号: 大邓带你玩转python
大家也可以加小编微信:tszhihu (备注:Python),拉大家到 Python爱好者社区 微信群,可以跟邓旭东、崔庆才等老师互相交流。谢谢
大家记得关注我,明天晚上 崔庆才老师教你玩 Python爬虫知乎用户信息,记得关注。内容:
1. 分析知乎Ajax请求及爬取逻辑
2. 用Scrapy实现递归爬取
3. 爬取结果存储到MongoDB 报名地址:爬取知乎所有用户详细信息 。后面到 Live也弄几场,感谢关注。