1.读取文本文件出现乱码
1.1 python2.7
首先,在Python2.7的里面只要设置和编码,读取文本是没有问题的:
# -*- coding:utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
一般我们用Python2.7,保证输出中文,以上就已经搞定啦。
例子:
# -*- coding:utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
import codecs
def testshData():
print('测试社会文本数据开始')
f_read = open(
r'D:tetsData\shData.txt', 'r'
)
news_zhengwen = f_read.readlines()
f = codecs.open(
r'D:resultData\result.txt',
'w', encoding='utf-8')
for line in news_zhengwen:
m = line.strip().split('\001') # 去除头尾空格,以\001进行切开
print(m[1])
testshData()
1.2 python3.5
以前可以说仿照Python2的方法来设置编码问题,
from imp import reload reload(MyModule)
或
import importlib,sys
importlib.reload(sys)
sys.setdefaultencoding("utf-8")
这些东西全部是错的,现在python3已经更新换代,删除啦这些没必要的东西,这些已成为过去啦。
python3 默认的编码为unicode
py 文件开头也没必要设置:# -*- coding:utf-8 -*-
只需要在读取文章的时候,设置一个:`encoding=‘utf-8’, errors=“ignore”
成功读取。。。。。
例如:
# -*- coding:utf-8 -*-
import codecs
def testshData():
print('测试社会文本数据开始')
f_read = codecs.open(
r'D:tetsData\shData.txt', 'r'
, encoding='utf-8', errors="ignore")
news_zhengwen = f_read.readlines()
f = codecs.open(
r'D:resultData\result_shData.txt',
'w', encoding='utf-8')
i= 0
for line in news_zhengwen:
i +=1
m = line.strip().split('\001') # 去除头尾空格,以\001进行切开
print(m[1])
f.write(''.join(m[1])+'\n')
print(i)
testshData()