首先是先把每篇文章里的单词用正则表达式切分出来,然后放进一个list里面,然后再将这个list里面的元素一一遍历,每次遍历后的结果都是用正则对这个单词进行切分,将得到的结果就是用另一个list保存起来,最后求这个list的长度就是每个单词的字母长度了。
具体的代码如下:
# -*-coding:utf-8 -*- import nltk # nltk.download() import sys import numpy import re import os from scipy.stats import pearsonr reload(sys) sys.setdefaultencoding('utf8') n = 0 while n < 5: n += 1 url = '/home/zheng/firstproject2/essay/' + str(n) file_name = os.listdir(url) print str(n) + '分下文章' number = 0 for single_file in file_name: number += 1 mean=0 SD=0 with open(url + '/' + single_file, 'r') as essay: content = essay.read() essay_list=re.findall('([A-Za-z\']+)',content) for word in essay_list: letterword_list=re.findall('([A-Za-z])',word) letterword_num=len(letterword_list) mean +=letterword_num print '第' + str(number) + '篇文章的单词字母数:'+str(mean) print '第' + str(number) + '篇文章的单词字母平均数:'+str(mean*1.0/len(essay_list)) for word in essay_list: letterword_list=re.findall('([A-Za-z])',word) letterword_num=len(letterword_list) SD+=(letterword_num-mean*1.0/len(essay_list))*(letterword_num-mean*1.0/len(essay_list)) SD=SD*1.0/len(essay_list) print '第' + str(number) + '篇文章的单词字母方差数:'+str(SD) print '第' + str(number) + '篇文章的单词字母标准数:'+str(SD**0.5)