NLP DAY1: 文本数据读取

实验介绍

在自然语言处理的第一步,我们要面对的是各种各样以不同形式表现的文本数据,比如,有的是纯 txt 文档,有的是存储在 Excel 中的表格数据,还有的是无法直接打开的 pkl 文件等。刚开始接触编程的同学在这里就犯难了,这可怎么把文本数据拿来进行代码层面的操作呢?

事实上,会者不难,针对这些不同类型的数据,可以基于 Python 中的基本功能函数或者调用某些库进行读写以及作一些基本的处理。本实验将介绍一些常见形式文件的操作,相信在学完本实验以后,大家能够非常快速地上手读写及处理大部分类型的文本数据。

知识点
  • txt 文本数据的读写
  • CSV 及 Excel 文本数据的读写
  • 更多的 DataFrame 操作
  • 数据规模太大怎么办

 

txt 文本数据的读写 

对于 txt 文本数据,Python 中的内置函数 open() 和 write() 就可以实现读取或者写入操作。 

open() 函数用于打开一个文件,创建一个 file 对象,之后,相关的方法才可以调用它进行更多的操作。 对于 open() 函数,我们主要关注三个传入的参数:

  • file: 文件路径(相对或者绝对路径)。
  • mode: 文件打开模式。
  • encoding: 编码格式,一般使用 utf-8。

其中,mode 决定了打开文件的模式,也就是限定了可以对文件做什么样的操作,比如只读,写入,追加等,这个参数是非强制的,默认文件访问模式为只读 (r),以下是常用的模式:

  • r : 读取文件,若文件不存在则会报错。
  • w: 写入文件,若文件不存在则会先创建再写入,若存在则会覆盖原文件。
  • a : 写入文件,若文件不存在则会先创建再写入,若存在不会覆盖原文件,而是在文件中继续写入内容。
  • rb, wb:分别与 r, w 类似,但用于读写二进制文件。
  • r+ : 可读、可写,若文件不存在会报错,在写操作时会覆盖原文件。
  • w+ : 可读,可写,文件不存在先创建,若存在会覆盖。
  • a+ :可读、可写,文件不存在先创建,若不存在不会覆盖,在文件中继续写入内容。

注:utf-8(8 位元,Universal Character Set/Unicode Transformation Format)是针对 Unicode 的一种可变长度字符编码。它可以用来表示 Unicode 标准中的任何字符,而且其编码中的第一个字节仍与 ASCII 相容,使得原来处理 ASCII 字符的软件无须或只进行少部份修改后,便可继续使用。因此,它逐渐成为电子邮件、网页及其他存储或传送文字的应用中,优先采用的编码。

接下来应用 open() 读取一个 txt 文件,创建一个 file 对象,并应用 readlines() 读取相关内容。

首先从线上环境中下载文件:

 教学代码:

!wget -nc "https://labfile.oss.aliyuncs.com/courses/3205/idiom.txt"

提示:打开右侧环境中的 Code.ipynb,开始动手练习吧。

读取文件 "idiom.txt" 中的内容并打印出来:

f = open("idiom.txt","r", encoding="utf-8")
poem = f.readlines()
print(type(poem), poem)  # 从结果可见,readlines() 方法会返回一个 list,包含所有的行,每一行为 list 中的一个元素

<class 'list'> ['路遥知马力,日久见人心。\n', '千学不如一看,千看不如一练。\n', '岁寒知松柏,患难见交情。\n'] 

通过以上的小练习,我们知道了 readlines() 方法的特点是,每次按行读取整个文件内容,将读取到的内容放到一个列表中,返回 list 类型。事实上,还存在另外两种读取方法:

  • read():读取整个文件,将文件内容放到一个 str 类型的变量中,但是,如果文件非常大,尤其是大于内存时,无法使用&n
上一篇: PyTorch DAY3:构建分类器(完)
下一篇: NLP DAY2: 文本数据处理(一部分)
feifeikon
博客等级 码龄5年 1271粉丝 221原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值