题目来自:Python 练习册。题目2.1: 你有一个目录,放了你一个月的日记,都是 txt,为了避免分词的问题,假设内容都是英文,请统计出你认为每篇日记最重要的词。
查看更多于本人博客:李飞阳
参考代码
#coding: utf-8
import re, os
from collections import Counter
# 目标文件所在目录
PATH = 'D:'
def getCounter(source):
#输入一个英文的纯文本文件,统计其中的单词出现的个数
with open(source) as f:
data = f.read()
data = data.lower()#字母全部小写
datalist = re.split(r'[\s]+', data)#根据空白字符,将data进行划分
return Counter(datalist)
def run(PATH):
# 切换到目标文件所在目录
os.chdir(PATH)
# 遍历该目录下的txt文件
total_counter = Counter() # 生成Counter()对象
for i in os.listdir(os.getcwd()):
if os.path.splitext(i)[1] == '.txt':#分离扩展名
total_counter += getCounter(i)# 多个Counter()叠加
return total_counter.most_common()#Counter对象转化为list格式
if __name__ == '__main__':
dic = run(PATH)
for i in range(len(dic)):
print('%15s ----> %3s' % (dic[i][0],dic[i][1]))
出现的错误
编码问题
UnicodeDecodeError: 'gbk' codec can't decode byte...
两种解决方法:
- decode('utf-8')重新编码一下
fp = open(filename,'rb')
content = fp.read().decode('utf-8')
- open方法指定参数encoding='UTF-8':
content= open('filename', mode='rb', encoding='UTF-8')
但是得注意一下,原文到底是不是UTF-8编码。反正Python编码这里是个大坑,多加小心。
文件名、目录名或卷标语法不正确
Path里边的斜杠是 / 不是
PATH = 'E:/Python/pydata-book-master/ch02'
AttributeError: 'list' object has no attribute '…
看看那个object到底是什么,print(type(name))
,然后再查查其对应的函数。
网友评论