Python中可避免读写乱码的一个强大方法

昨天在帮同学解析一批从网络上爬取的文件时,遇到一个奇葩的问题,文件本身的编码是gbk,Eclipse编辑环境的默认编码是utf8,使用常规的open方法批量打开文件时,某些文件中存在一些不可被gbk识别的特殊字符导致读取错误,而这些特殊字符又是存在于utf8编码中的。经不断尝试,发现一个很好的解决办法:使用Python自带的codecs。codecs就是为编码转码而生的,关于此功能的更多详情请移步 https://docs.python.org/3.2/library/codecs.html

os;import codecs;from bs4 import BeautifulSoup;): #注意这里的编码格式with codecs.open(filePath,”r”,encoding) as f:return f.read()):with codecs.open(filePath,”w”,encoding) as f:f.write(u)fileList=os.listdir(“E:/content/”); #获取原文件列表for eachFile in fileList: #遍历文件名temp=ReadFile(“E:/content/”+eachFile); #读文件WriteFile(‘E:/content_0629/’+eachFile, temp, “utf8”); #将读取的内容转存为utf8编码的文件print(‘finished.’)

另外,文件完成转存之后,在使用BeautifulSoup进行解析时,想过滤掉一些噪声信息,完整代码如下:

# -*- coding: utf8 -*- import os;from bs4 import BeautifulSoup;n=0;fileList=os.listdir(“E:/content_0629”);for eachFile in fileList:n=n+1; #设置文件序号rawText= open(r”E:/content_0629/”+eachFile,’r’,encoding=’utf8′);#读文件bs4Text=BeautifulSoup(rawText);#调用BeautifulSoup进行解析title=bs4Text.find(;else:title=title.get_text(); #获取标题内容文本title=title.replace(“ ”,””);#替换掉其中的全角空格title=title.replace(” “,””);#替换掉其中的半角空格mainContent=bs4Text.find(;else:mainContent=mainContent.get_text();mainContent=mainContent.replace(“ ”,””);mainContent=mainContent.replace(” “,””);mainContent=mainContent.replace(“\t”,””);mainContent=’\n’.join(mainContent.split()) #将多个连续的空行替换为一个空行#将解析后的文本保存到文件中,仍以utf8编码fwriter=open(‘E:/result_0629/resutl_’+str(n)+”.txt”,’w’,encoding=’utf8′);fwriter.write(title+”\n”+mainContent);fwriter.close();print(‘finished.’)

,要知道,当你一直在担心错过了什么的时候,

Python中可避免读写乱码的一个强大方法

相关文章:

你感兴趣的文章:

标签云: