第三次作业
学号 2017*****7019
姓名 于子淇
我的码云仓库地址:https://gitee.com/yuziqi/yu_ziqis_warehouse/tree/master
读取文件到缓冲区
def
process_file(dst):
# 读文件到缓冲区
try
:
# 打开文件
f1
=
open
(dst,
"r"
)
except
IOError as s:
print
(s)
return
None
try
:
# 读文件到缓冲区
bvffer
=
f1.read()
except
:
print
(
"Read File Error!"
)
return
None
f1.close()
return
bvffer
缓冲区字符串分割成带有词频的字典
def
process_buffer(bvffer):
if
bvffer:
word_freq
=
{}
# 下面添加处理缓冲区 bvffer代码,统计每个单词的频率,存放在字典word_freq
bvffer
=
bvffer.lower()
for
x
in
'~!@#$%^&*()_+/*-+\]['
:
bvffer
=
bvffer.replace(x,
" "
)
words
=
bvffer.strip().split()
for
word
in
words:
word_freq[word]
=
word_freq.get(word,
0
)
+
1
return
word_freq
将字典按词频排序并输出排名前十的词频对
def
output_result(word_freq):
if
word_freq:
sorted_word_freq
=
sorted
(word_freq.items(), key
=
lambda
v: v[
1
], reverse
=
True
)
for
item
in
sorted_word_freq[:
10
]:
# 输出 Top 10 的单词
print
(item)
封装main函数
def
main():
dst
=
"Gone_with_the_wind.txt"
bvffer
=
process_file(dst)
word_freq
=
process_buffer(bvffer)
output_result(word_freq)
if
__name__
=
=
"__main__"
:
import
cProfile
import
pstats
cProfile.run(
"main()"
,
"result"
)
# 直接把分析结果打印到控制台
p
=
pstats.Stats(
"result"
)
# 创建Stats对象
p.strip_dirs().sort_stats(
"call"
).print_stats()
# 按照调用的次数排序
p.strip_dirs().sort_stats(
"cumulative"
).print_stats()
# 按执行时间次数排序