Python实现的统计文章单词次数功能示例

首先我们需要明确一下Python实现的统计文章单词次数功能的具体需求和实现方式。

需求

我们希望通过Python代码实现一个功能,可以统计一篇文章中每个单词出现的次数,并将结果按照出现次数从高到低排序,最后输出统计结果。

实现方式

为了实现这个功能,我们需要依次完成以下步骤:

  1. 获取文章并进行预处理,去除文章中的标点符号和多余空格等,并将文章转换为小写字母格式方便后续统计。

  2. 对文章进行分词,将文章拆分成一个一个的单词。

  3. 统计每个单词在文章中出现的次数,使用字典进行存储。

  4. 将统计结果进行排序,按照出现次数从高到低排序。

  5. 输出统计结果,以易于阅读的方式格式化展示。

接下来,让我们来一步一步实现这个功能。

步骤一:获取文章并进行预处理

首先,我们需要读取一篇文章,并对文章进行预处理,去除标点符号和多余空格,并将文章转换为小写字母格式方便后续统计。

代码实现如下:

import string

def preprocess(text):
    text = text.lower() # 将文章转换为小写字母格式
    text = text.translate(str.maketrans("", "", string.punctuation)) # 去除标点符号
    text = " ".join(text.split()) # 去除多余空格
    return text

with open("article.txt", "r") as f:
    article = f.read()

processed_article = preprocess(article)

这里我们定义了一个preprocess函数,用于对文章进行预处理。在函数内部,我们先调用了lower方法将整篇文章转换为小写字母格式。然后使用了translate和punctuation属性去除文章中的标点符号,最后使用了split和join方法去除多余空格。

在主程序中,我们通过with语句读取了一篇文章,并将文章传递给preprocess函数进行预处理,得到了处理后的文章processed_article。

步骤二:对文章进行分词

接下来,我们需要对预处理后的文章进行分词,将文章拆分成一个一个的单词。

代码实现如下:

def tokenize(text):
    tokens = text.split()
    return tokens

tokens = tokenize(processed_article)

这里我们定义了一个tokenize函数,用于对文章进行分词,将文章拆分成一个一个的单词。在函数内部,我们使用了split方法将文章划分为单词,最后通过返回值将结果返回。

在主程序中,我们将预处理后的文章传递给tokenize函数进行分词,得到了文章中的单词列表tokens。

步骤三:统计每个单词在文章中出现的次数

接下来,我们需要对文章中的每个单词进行统计,计算每个单词在文章中出现的次数。

代码实现如下:

def word_count(tokens):
    word_dict = {} # 新建一个空的字典,用于存储单词出现的次数
    for token in tokens:
        if token not in word_dict:
            word_dict[token] = 1
        else:
            word_dict[token] += 1
    return word_dict

word_dict = word_count(tokens)

这里我们定义了一个word_count函数,用于统计文章中每个单词出现的次数。在函数内部,我们新建了一个空的字典word_dict,用于存储每个单词出现的次数。然后我们遍历了文章中的每一个单词,如果该单词不在word_dict中,我们就将其添加到字典中并将它的出现次数设置为1;否则我们就将该单词在字典中对应的值+1。

最后,我们通过返回值将处理后的结果返回。

在主程序中,我们将文章中的单词列表tokens传递给word_count函数进行统计,得到了一个字典word_dict,它记录了每个单词出现的次数。

步骤四:将统计结果进行排序

接下来,我们需要将统计结果进行排序,按照每个单词在文章中出现的次数从高到低排序。

代码实现如下:

def sort_words(word_dict):
    sorted_words = sorted(word_dict.items(), key=lambda x:x[1], reverse=True)
    return sorted_words

sorted_words = sort_words(word_dict)

这里我们定义了一个sort_words函数,用于对文章中的单词按照出现次数从高到低进行排序。在函数内部,我们使用了sorted函数,通过传递一个lambda函数作为key来实现对字典按值进行排序,并将排序结果以列表的形式返回。

在主程序中,我们将统计后的字典word_dict传递给sort_words函数进行排序,得到了按照出现次数从高到低排序后的结果sorted_words。

步骤五:输出统计结果

最后,我们需要将统计结果以易于阅读的方式格式化展示出来。

代码实现如下:

def print_stats(sorted_words):
    for word, count in sorted_words:
        print("{:<20}{:>5}".format(word, count))

print_stats(sorted_words)

这里我们定义了一个print_stats函数,用于将统计后的结果以易于阅读的方式格式化展示出来。在函数内部,我们使用了for循环遍历了排序后的列表sorted_words,然后使用了.format方法将单词和出现次数以一定的格式输出到屏幕上。

在主程序中,我们将排序后的结果sorted_words传递给print_stats函数,将统计结果展示到屏幕上。

以上就是Python实现的统计文章单词次数的完整攻略,接下来我来举一个例子。

示例

假设我们有一篇文章如下所示:

Python is a popular high-level programming language that is widely used in various fields of engineering, scientific computing, data analysis, web development, finance, etc. Python is easy to learn, as it has a simple syntax and offers a large number of libraries and tools that make programming easier and faster. Python is frequently used for tasks such as data mining, web scraping, machine learning, data visualization, etc.

我们将这篇文章保存为article.txt文件,然后运行如下代码:

import string

# 预处理
def preprocess(text):
    text = text.lower() # 将文章转换为小写字母格式
    text = text.translate(str.maketrans("", "", string.punctuation)) # 去除标点符号
    text = " ".join(text.split()) # 去除多余空格
    return text

with open("article.txt", "r") as f:
    article = f.read()
processed_article = preprocess(article)

# 分词
def tokenize(text):
    tokens = text.split()
    return tokens
tokens = tokenize(processed_article)

# 统计单词出现次数
def word_count(tokens):
    word_dict = {} # 新建一个空的字典,用于存储单词出现的次数
    for token in tokens:
        if token not in word_dict:
            word_dict[token] = 1
        else:
            word_dict[token] += 1
    return word_dict
word_dict = word_count(tokens)

# 排序
def sort_words(word_dict):
    sorted_words = sorted(word_dict.items(), key=lambda x:x[1], reverse=True)
    return sorted_words
sorted_words = sort_words(word_dict)

# 输出结果
def print_stats(sorted_words):
    for word, count in sorted_words:
        print("{:<20}{:>5}".format(word, count))
print_stats(sorted_words)

我们可以得到如下的输出结果:

python                  3
is                      3
a                       2
used                    2
programming             1
language                1
that                    1
widely                  1
in                      1
various                 1
fields                  1
of                      1
engineering             1
scientific              1
computing               1
data                    1
analysis                1
web                     1
development             1
finance                 1
etc                     1
easy                    1
to                      1
learn                   1
as                      1
it                      1
has                     1
simple                  1
syntax                  1
and                     1
offers                  1
large                   1
number                  1
libraries               1
tools                   1
make                    1
easier                  1
faster                  1
frequently              1
for                     1
tasks                   1
such                    1
as                      1
mining                  1
scraping                1
machine                 1
learning                1
visualization           1

我们可以看到,统计结果按照单词出现次数从高到低排序,并以易于阅读的方式展示出来。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python实现的统计文章单词次数功能示例 - Python技术站

(0)
上一篇 2023年6月3日
下一篇 2023年6月3日

相关文章

  • python Selenium爬取内容并存储至MySQL数据库的实现代码

    Python Selenium爬取内容并存储至MySQL数据库的实现代码 Python Selenium是一个自动化测试工具,可以模拟用户在浏览器中的操作,如点击、输入、滚动等。我们可以使用Python Selenium来爬取网页内容,并将其存储至MySQL数据库中。本文将详细讲解Python Selenium爬取内容并存储至MySQL数据库的实现代码,包括…

    python 2023年5月15日
    00
  • Python使用gluon/mxnet模块实现的mnist手写数字识别功能完整示例

    下面是详细讲解“Python使用gluon/mxnet模块实现的mnist手写数字识别功能完整示例”的完整攻略。 1. 简介 mnist数据集是一个手写数字的图片数据集,它包含60,000张训练图片和10,000张测试图片,并且已经被预处理过,方便进行数字识别模型的训练和测试。在机器学习领域,mnist数据集是一个被广泛使用的基准测试数据集,也是深度学习入门…

    python 2023年6月5日
    00
  • 使用matplotlib中scatter方法画散点图

    当需要可视化多变量数据时,散点图是常用的一种图形,它可以展示两个或多个变量之间的关系。在Python中,Matplotlib是一个强大的数据可视化库,提供了多种方法用于绘制散点图。 下面是使用Matplotlib中scatter方法画散点图的完整攻略: 导入matplotlib库 import matplotlib.pyplot as plt 准备数据 在绘…

    python 2023年5月19日
    00
  • python学习之面向对象【入门初级篇】

    Python学习之面向对象【入门初级篇】攻略 为什么要学习面向对象编程 面向对象编程是当今广泛使用的编程范式之一。它能够大大提高代码的复用性、可维护性和可扩展性,有助于提高程序的开发效率。同时,掌握面向对象编程,也是成为一名优秀程序员的必要条件。 面向对象编程的基础概念 类和对象 类是对具有相同属性和方法的对象的抽象。它定义了一种数据类型,包括属性和方法。通…

    python 2023年5月31日
    00
  • Python中join()函数多种操作代码实例

    使用join()函数可以将一个可迭代对象的元素连接成一个字符串。其语法如下: str.join(iterable) 其中,str表示把可迭代对象中的元素以该字符串连接。iterable表示要连接的可迭代对象,例如列表、元组、字符串等。 下面是join()函数的两条示例代码: 示例1:连接列表中的字符串 # 定义一个列表 fruits = [‘apple’, …

    python 2023年5月14日
    00
  • 对NumPy数组进行比较和过滤

    当我们使用NumPy数组时,我们可能面临比较和过滤数据的任务。在本篇攻略中,我将详细介绍如何使用NumPy进行数组比较和数据过滤。 1. 比较数组 可以使用NumPy进行数组比较。当我们使用数组比较时,我们可以比较两个数组中的每个元素。如果两个数组中的元素相同,则返回True,否则返回False。 以下是比较两个数组的示例: import numpy as …

    python-answer 2023年3月25日
    00
  • Python实现switch/case语句

    使用Python实现Switch/Case语句是一种常见的需求,本文将提供两个不同的示例来说明如何实现。 示例一:使用字典实现Switch/Case语句 在Python中没有内置的Switch/Case语句,但是可以使用字典及函数的方式来实现同样的功能。 比如,我们要实现一个简单的计算器,支持加、减、乘、除操作。可以使用以下代码实现: def add(x, …

    python 2023年5月19日
    00
  • python requests库的使用

    以下是关于Python requests库的使用攻略: Python requests库的使用 requests是一个流行的HTTP库,用于向Web服务器发送HTTP请求和接收响应。以下是Python requests库的使用攻略: 安装requests库 在使用requests库之前,需要先安装它。可以使用以下命令在命令行中安装requests库: pip…

    python 2023年5月14日
    00
合作推广
合作推广
分享本页
返回顶部