什么是Unicode码
每个字符分配一个编号表示为\uxxxx其中的xxxx为十六进制数。程序中可以很方便的操作,但是如果是写到文件或者终端上将被编码为字节流。字符是可以实现一个或者多个字形的抽象实体,一个字体是字符到字形的映射,只有字形能够显示出来。
从文件中提取已编码文本
读取其他编码的文件是用open函数不能正常打开,需要使用模块codecs,使用模块下的open方法,在参数encoding中指定编码就能正常显示文件。代码如下,样本文件是使用的latin2编码。
import nltk
#获取文件所在的路径
path = nltk.data.find('corpora/unicode_samples/polish-lat2.txt')
print(path)
'''
#使用open函数不能正常打开文件
f = open(path)
contant = f.read()
print(contant)
'''
#使用编码模块打开文件
import codecs
#使用编码模块打开文件,提前预知编码格式为latin2
f = codecs.open(path,'r',encoding="latin2")
#逐行输出文件内容
for line in f:
print(line)
#设置字符串为unicode编码
text = u'你好世界,你好python'
print(text)
#字母a的Unicode编码 ascll码也为97,所以就英语来说ASCII和Unicode码是兼容的
#61位97的十六进制
char = u'\u0061'
print(char)
#获得字符的Unicode编码
print('a的Unicode编码',ord('a'))
现在就知道了两种指定为Unicode编码的方式,1、在字符或者字符串前面使用u
2、直接使用\u + 编码点
如a的编码是97转换为十六进制为61则a的Unicode编码就为\u0061
网友评论