python怎么去掉列表的项目符号_Python中最基本的两个实例——第二个项目符号,python,最最,基础,弹...

本文介绍如何使用Python进行文本词频统计,包括预处理文本、使用字典结构统计词频并输出最常见的词汇。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 问题背景

日常生活中,我们总能碰到一些需要我们统计词数或者文本类型的情况,今天我们我们要看看python中的对文本词频的统计。

2. 问题前准备

采用字典解决问题,该问题的IPO如下:

输入:从文件中读取一篇文章

处理:采用字典结构进行统计

输出:文章中最常见的词语及次数

本篇以英语为例,如果涉及到中文词语的统计,可以使用第三方jieba库,对中文词语的统计有着很大的效果。

3. 函数准备

本题通过一个函数用来打开文本,另一个函数用来处理文本,最后进行输出,整个程序完成。

4. 编写步骤

4.1 打开文本

本文以python之禅为例,在IDLE中输入

import this

即可获得全文。

def gettxt():

txt = open("The Zen of Python.txt",'r').read()#注意:因为py文件和txt放在同一目录,故文件名前不加地址,若py文件和txt放在不同文件夹,则需要地址前缀

txt = txt.lower()#将全文字母小写

for s in '!"#$%^&*()[]{},./;<>:"|\_*-+':#去掉特殊符号

txt = txt.replace(s," ")#将特殊符号替换为空格

return txt

下面介绍一下

open()

函数,open函数的语法规则如下:

file object = open(文件名 [, 打开方式][, 是否寄存])

打开方式的几个常见模式

模式

描述

r

以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。

r+

打开一个文件用于读写。文件指针将会放在文件的开头。

a

打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

a+

打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。

w

打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。

w+

打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。

模式

r

r+

w

w+

a

a+

*

*

*

*

*

*

*

*

*

创建

*

*

*

*

覆盖

*

*

指针在开头

*

*

*

*

指针在结尾

*

*

4.2 处理文本

ztxt = gettxt()

words = ztxt.split()#文本以默认方式分开,大多是以空格隔开,如果以特定方式,可以对split(sep='')中sep进行定义

counts = {}#创建counts的字典

for word in words:

counts[word] = counts.get(word,0) + 1#对words进行遍历,get函数的意义是键存在返回相应值,否则返回默认值0,所以在遍历过程中,原先有过的再次出现会加1,而第一次出现的则是默认值,而后再加1

items = list(counts.items())#将counts中所有的键值对以列表的形式返回到items中

items.sort(key = lambda x:x[1], reverse = True)#这是sort函数和lambda函数的一次配合

for i in range (10):

word,count = items[i]

print('{0:<10}{1:>5}'.format(word,count))#格式化输出

下面对于

sort()

函数进行介绍:

sort() 函数用于对原列表进行排序,语法格式如下:

list.sort(key=None, reverse=False)

key — 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。

reverse — 排序规则,reverse = True 降序, reverse = False 升序(默认)

在上例中,就是sort()函数与lambda函数的一次配合,sort()函数进行排列,lambda函数就行对排列方式的解释,所谓x:x[1],就是取items列表中元素的第二位,也就是出现次数进行排序,从而做到一种将单词的出现次数按倒序排列后选择的目的。

5. 整体代码

def gettxt():

txt = open("The Zen of Python.txt",'r').read()

txt = txt.lower()

for s in '!"#$%^&*()[]{},./;<>:"|\_*-+':

txt = txt.replace(s," ")

return txt

ztxt = gettxt()

words = ztxt.split()

counts = {}

for word in words:

counts[word] = counts.get(word,0) + 1

items = list(counts.items())

items.sort(key = lambda x:x[1], reverse = True)

for i in range (10):

word,count = items[i]

print('{0:<10}{1:>5}'.format(word,count))

6. 运算结果

is 10

better 8

than 8

the 6

to 5

of 3

although 3

never 3

be 3

one 3

7. 小结

这才是只是第一步,还可以根据需要对有些词经行取舍,另外在英语中’m,'re,‘s之类出现比较多,还可以通过替换将它们归结于am,are,is之类,还有更加广阔的空间可以探索!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值