从txt文件读取数据,数据的编码及字符串的编码问题

此篇关于用open()方法打开txt文本文件,并从中读取数据,数据的编码形式转化与注意事项的博文旨在总结博主曾遇到的相关问题,并记录下来。

文本实例为中文停用词库stopwords.txt,文本为UTF-8编码。

这里记述两种打开并读取中文文本的操作。

The first method:

import os

stopwords_path='stopwords.txt'
kk=[]
with open(stopwords_path, 'r',encoding='utf-8') as st:
    kk=st.read().split('\n')          #返回的kk为包含中文词汇的列表

The second method:

import os

stopwords_path='stopwords.txt'
kk=[]
with open(stopwords_path, 'rb') as st:
    kk=st.read().decode('utf-8').split('\r\n')      #返回的kk同上,此处在.read()读取的字符串中词汇之间使用\r\n分隔开的,不知为何与上面不同

注意两种方法的区别,第一种在open()方法中直接用其encoding属性,指定数据用utf-8编码读取出来,.read()方法读取整个文本并返回一个字符串,因此可用.split()属性以分隔符将词汇分开;

而第二种的open()用法中,以字节码文件(二进制文件)形式打开文本文件并读取数据,注意这里open()方法中不能再传递encoding参数,否则会提示(不懂为什么,希望大神能帮忙解答)

ValueError: binary mode doesn't take an encoding argument

但.read()返回的字节码对象有decode()、encode()方法,注意这两个方法只能用于字节码对象的编码与解码。

b.decode(encoding, errors)   #把字节码对象b解码为对应编码的字符串;errors为错误控制

s.encode(encoding="utf-8", errors="strict")   #把字符串对象s编码为字节码对象

额外记录:

.readline()返回一行字符串

.readines()返回包含所有行文本的一个列表


  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值