python统计英文单词出现次数并把结果生成字典

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

python统计英⽂单词出现次数并把结果⽣成字典最近舍友在学Python,有个作业是为了解决统计单词出现次数并把结果输出成字典这个问题,感觉挺有趣的,就写了⼀段demo代码,分享在博客上,希望对你有所帮助。

1.解决思路
(1)排除掉其他⼲扰项。

我们的⽬标是统计英⽂单词出现次数,拿到的数据源是⼀段由英⽂单词和各种符号的⽚段,所以⼲扰项就是各种符号。

因为涉及的符号过多,只需要a-z 和A-Z,不可能把所有的字符全部⽤replace⽅法替换掉,所以⾃然⽽然的想到正则匹配,在python⾥⾯的re模块,⽤⾥⾯的sub⽅法来进⾏⼲扰项的过滤。

注意:要保留完整的单词就不能把空格也去掉,把其它字符全替换成空格即可。

re.sub:替换所有的匹配项,返回⼀个替换后的字符串,如果匹配失败,返回原字符串
(2)将单词分割成列表。

第⼀步中我们保留了空格,第⼆步我们就以空格为特点分割单词,⽣成列表。

注意:由于可能存在连续两个空格存在的情况,所以要⽤str.remove("")去除多余的空项
(3)⽣成字典的键列表。

建⼀个新的列表作为字典的键列表,遍历原来的单词列表,如果单词列表⾥⾯的单词不在新列表⾥,就往新列表⾥添加该单词。

(4)将单词作为结果字典的键。

使⽤字典的fromkeys⽅法来把第三步⽣成的key列表作为结果字典的键。

dict.fromkeys(seq[, value])
seq -- 字典键值列表。

value -- 可选参数, 设置键序列(seq)的值。

(5)遍历key列表,利⽤count函数统计单词出现次数
2.代码实现
# 统计单词出现次数并把结果输出成字典
# 数据输⼊
str = "Hello world, There are some test words. Hello world, There are some test words. Haha!"
# 过滤规则:过滤掉所有⾮字母的字符
import re
str = re.sub(r"[^a-zA-Z]+", " ",str)
print("过滤后的字符串:",str)
#拆分成列表
str = str.split(" ")
# 去除多余的空项
str.remove("")
print("拆分成列表:",str)
# ⽣成字典的key列表
dict_keys = []
for i in str:
if i not in dict_keys:
dict_keys.append(i)
print("key列表:",dict_keys)
# 输出字典
# 定义空字典
words_dict = {}
# 往字典写⼊key值
words_dict.fromkeys(dict_keys)
# 遍历key列表,利⽤count函数统计单词出现次数
for j in dict_keys:
words_dict[j] = str.count(j)
print("字典:",words_dict)
3.效果展⽰。

相关文档
最新文档