Python读取Unicode文本

#coding=utf-8
'''
最近需要操作txt格式文档,用原本的文本读取方式不成功,于是搜索了一下找到原因。
需要读取的目录下的文件有两种编码方式,一种是ANSI,另外一种是Unicode,但是Unicode的
存储方式有UTF-8,UTF-16等,UTF即为Unicode Translation Format,就是把Unicode转做某种
格式的意思。读取Unicode编码方式的文本时需要标明其存储方式,否则会出错。
PS:本例子是用readfile(filename)读取unicode编码文件方案,如果要读取utf-8编码的文件,可以把utf-16改为utf-8
'''
import sys
import codecs
from PyQt4 import QtGui,QtCore
def writefile(filename, v_ls):
    f = codecs.open(filename, 'wb', 'utf-8')
    for i in v_ls:
        f.write(i + os.linesep)
        f.close()
def readfile(filename):
    f = codecs.open(filename,'r','utf-16')
    ret = [ line.strip() for line in f]
    f.close()
    return ret

if __name__ == '__main__':
    #Qt的菜单翻译模块,并初始化数据
    tran = QtCore.QTranslator()
    tran.load('qt_zh_CN.qm')
    app = QtGui.QApplication(sys.argv)
    #安装翻译模块
    app.installTranslator(tran)
    win32 = QtGui.QWidget()
    win32.setWindowTitle(u'试题')
    win32.setWindowIcon(QtGui.QIcon('gba.png'))
    win32.setGeometry(300,300,600,480)
    vBox = QtGui.QVBoxLayout()
    win32.setLayout(vBox)
    txt = QtGui.QTextEdit(win32)
    #更改调色板实现右键选择数据效果一致(Qt默认变成浅灰色很不明显)
    p= QtGui.QPalette()
    p.setColor(QtGui.QPalette.Inactive,QtGui.QPalette.HighlightedText,QtGui.QColor(255,255,255))
    p.setColor(QtGui.QPalette.Inactive, QtGui.QPalette.Highlight ,QtGui.QColor(51,153,255))
    txt.setPalette(p)
    #将文本对象加入垂直布局,实现自适应窗口大小
    vBox.addWidget(txt)
    win32.show()
    fn = u'tiku.txt'
    ret = readfile(fn)
    #将列表数据通过join函数以 "\r\n" 的分隔整合到一起存入data中
    data = "\r\n".join(list(ret))
    txt.setText(QtCore.QString(data))
    sys.exit(app.exec_())

   本例子是基于Python2.7 , 使用PyQt4.8版本。

猜你喜欢

转载自blog.csdn.net/kingzhang2000/article/details/79576291
今日推荐