
1.3 文本数据处理
1.3.1 文本操作基础
文本操作的基本步骤是:打开—读写—关闭。这里的“打开”并不是使用文本编辑打开一个文件,而是相当于用一个文件指针指向文件存储的起始位置。在Python中打开文件采用的方法是open,常用的模式有读、写、追加等。表1.4给出了文件操作的不同模式。
表1.4 文件操作的不同模式

Python中常用的读取文件的函数有三种,分别为read()、readline()、readlines(),下面分别介绍这三个函数的具体用法。test.txt文本文件中的内容如图1.6所示。

图1.6 test.txt文本文件中的内容
以读取test.txt为例,查看read、readline和readlines函数的区别。
(1)read()方法。通过文件对象的read方法读取内容,并以字符串的形式返回结果。

通过变量f将文件的内容赋值给变量data。文件的每行结尾处都有一个不可见的控制字符“\n”作为结束标志。通过print就可以打印出文件原本的内容。
代码运行结果如下所示:

(2)readline()方法。该方法只读取文本文件的第一行内容,以字符串的形式返回结果。

readline()方法从文件指针的位置开始,向后读到“\n”结束本次读取。
代码运行结果如下所示:

(3)readlines()方法。该方法读取文本文件中的所有信息,并以列表的方式返回结果。

readlines()方法从文件指针的起始位置读到结尾,每一行作为列表中的一项,通常也可以结合for循环一起使用。
代码运行的结果如下所示:

在本节最开始时我们已经提出,文件的基本操作是打开、读写和关闭,但是读者可以看到案例中的代码并没有手动关闭,这是因为使用with关键字打开文件可以省去这一步。当with语句结束时,文件自动关闭。
1.3.2 案例实现——文本数据统计
1.实验目标
使用Python读取文本并统计词频。
2.实验目标
实验环境如表1.5所示。
表1.5 实验环境

3.实验步骤
创建words_counter.py源码文件,用于实现词频的统计。
按照如下步骤编写代码。
步骤一:导入模块

步骤二:编写read_text函数实现词频统计


步骤三:自定义main方法和主函数处理

步骤四:运行代码
使用如下命令运行实验代码。

运行结果如下所示:

1.3.3 案例实现——词云生成
1.实验目标
使用Python绘制文本文件中中文汉字的词云。
2.实验目标
实验环境如表1.6所示。
表1.6 实验环境

3.实验步骤
创建word_cloud工程目录,实验目录结构如图1.7所示。

图1.7 实验目录结构
按照如下步骤编写代码。
步骤一:导入模块

步骤二:创建停用词列表


步骤三:对句子进行分词

步骤四:读取文本文件,并对文本中的句子分词

步骤五:调用wordcloud库构建词云,保存结果

步骤六:运行代码
使用如下命令运行代码。

经过运行,lighting的词云效果如图1.8所示。

图1.8 lighting的词云效果