发布网友 发布时间:2022-04-21 18:51
共1个回答
热心网友 时间:2022-04-06 05:21
我昨天遇到一个疑惑,使用python读入中文,然后print读入的文本,却显示为乱码。
os.chdir("C:/Users/v_chjwang/Desktop/weibosent/SentiAnalysis_local")
file = open("./test2.txt", 'r')
def read_file(file_name):
txt = []
for i in file_name:
line = i.split(',')[0]
txt.append(line)
return txt
txt = read_file(file)
>>> txt[1]
'\xe8\xbf\x99\xe9\x83\xa8\xe6\x\x8b\xe6\x9c\xba\xe5\xbe\x88\xe4\xb8\x8d\xe9\x94\x99\xe3\x80\x82\n'
>>> print txt[1]
杩欓儴镓嬫満寰堜笉阌欍S
我想一定是我的encoding没有设置好,python是偏爱unicode的,我还是先声明一些基础的东西吧。尝试指定软件型号、编码方式、使用sys设置预定的encoding,如下:
#! /usr/bin/env python2.7
# -*- coding:utf-8-*-
#coding=utf-8
import os
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
结果还是不行。错误依旧。
到底是怎么回事呢?我尝试着将文本的encoding由utf-8改成ANSI,结果就正确了。如下效果:
>>> txt[1]
'\xd5\xe2\xb2\xbf\xca\xd6\xbb\xfa\xba\xdc\xb2\xbb\xb4\xed\xa1\xa3\n'
>>> print txt[1]
这部手机很不错。
程序:===================
a = '中文'
b = u'中文'
print a, type(a)
print b, type(b)
print a.decode('gbk')
--------------------------------------
文件格式ansi
#coding=gbk
输出:
中文
中文
中文 ( print a.decode('gbk') )
--------------------------------------
文件格式utf8带bom
输出:
涓 枃
中文
中文 ( print a.decode('utf8') )
--------------------------------------
他的结论也是说:所以感觉还是用#coding=gbk的ansi格式的存储比较好。