接触python有一段时间了,但没有专门学习基础知识,写代码时总是到网上找资料。不过,相信经过练习可以慢慢积累。本文拿以前写的小程序练手。参见文章《GBK转unicode码查询表的改进》。

涉及python知识:

1、先初始化好一个65535大小的列表。开始我想直接定义buffer = [65535],但这和C的不同,所以使用append方式初始化0——因为这样才生成65535个列表。

2、由于GBK编码索引不连续,所以使用buffer[x2] = x1这种形式赋值。开始使用insert方式,但结果不正确。

源码如下:

#!/usr/bin/python
# encoding: utf-8import os
import datetime
import timeSRC = "gbkuni30.txt"
DST = "gbkuni30_gen1.h"
ARRAY = "gbkuni30"buffer = [] # 空列表
max_num = 0# 初始化好buffer,一共65535
for i in range(0, 65535):buffer.append(0x0)try:f = open(SRC, 'r')while True:l = f.readline()if l == '':break;s = l.strip().split(':') #以:分割,生成不同个数的列表if len(s) == 2:x1 = int(s[0], 16) # 字符串转换为十六进制x2 = int(s[1], 16)buffer[x2] = x1 # 针对索引赋值if x2 > max_num:max_num = x2#print("%04x %04x" % (x2, x1))print("max num %d %x len: %d" % (max_num, max_num, len(buffer)))
except:raisef = open(DST, "w")test = "/**********************************************************************************/\n"
test += "/* GBK(GB18030) to UNICODE table, powered by Late Lee */\n"
test += "/* http://www.latelee.org */\n"
test += "/* %s */\n" % (datetime.datetime.now())
test += "/* The source file comes from: */\n"
test += "/* http://icu-project.org/repos/icu/data/trunk/charset/source/gb18030/gbkuni30.txt*/\n"test += "/**********************************************************************************/\n"test += "#ifndef __GBK2UNICODE__H\n"
test += "#define __GBK2UNICODE__H\n\n"test += "static unsigned short %s[] = \n{\n" % (ARRAY)f.write(test) # write text to file
####
cnt=0
for i in range(0x8140, max_num+1):#print("%x -- 0x%x" % (i, buffer[i]))ch = "0x%04x, " % (buffer[i])f.write(ch)cnt+=1;if cnt % 10 == 0:tmp = " // line num %d \n" % (cnt / 10 - 1)f.write(tmp)########
test= "\n"
test+= "};\n\n"
test+= "#endif //__GBK2UNICODE__H\n"f.write(test) # write text to file
f.close()

生成的头文件与使用C版本实现的一致。

李迟 2015.1.15 周日 中午

使用python实现GBK转unicode码查询表相关推荐

  1. GBK转unicode码查询表的改进

    上篇文章<GBK转unicode码查询表>中有一个美中不足的地方,就是占用的内存空间稍大了一点,约128KB,当然,对于PC这种平台无所谓,但对于一些场合来说,能省内存就省内存,何况那个表 ...

  2. GBK转unicode码查询表

    大约大半年前完成一个矢量字库类,使用freetype库从矢量字库中读取字符轮廓,然后转成只有0.1的缓冲区,可以使用许多场合.涉及了freetype的操作,同时还有字符编码方面的知识.前不久,有同事反 ...

  3. python返回unicode_Python 中通过 unicode 码返回单字符的函数是 ,返回单字符 unicode 码的函数是 。_学小易找答案...

    [单选题]哪一个命令能用来查找在文件TESTFILE中只包含四个字符的行?( ) [单选题]修改以太网卡mac地址的命令为( ). [单选题]Python 字符串支持切片操作,如有字符串 s &quo ...

  4. 关于Python ord()和chr()返回ASCII码和Unicode码的看法

    刚开始学这两个函数的时候,看到书上说的是返回Unicode码, 但是自己去百度之后,发现很多人都说返回是ASCII码 为什么会这样呢? 那么为了不误解 ,我们先介绍下Unicode码和ASCII码 A ...

  5. 汉字编码(【Unicode】 【UTF-8】 【Unicode与UTF-8之间的转换】 【汉字 Unicode 编码范围】【中文标点Unicode码】【GBK编码】【批量获取汉字UNICODE码】)

    参考博客: Unicode与UTF-8互转(C语言实现):http://blog.csdn.net/tge7618291/article/details/7599902 汉字 Unicode 编码范围 ...

  6. python初级6(九九乘法表,二进制,ASCII编码,GBK,unicode,utf-8)

    九九乘法表 for i in range(1,10):for j in range(1,i+1):print(f"{i}*{j} == {i*j}",end=" &quo ...

  7. [编码]ASCII、GBK、Unicode(万国码) 和 UTF-8

    American ASCII编码 (American Standard Code for Information Interchange,美国信息互换标准代码)  China    gbk编码     ...

  8. python字符编码转换_Python字符和字符值(ASCII或Unicode码值)转换方法

    目的 将一个字符转化为相应的ASCII或Unicode码,或相反的操作. 方法 对于ASCII码(0~255范围) 代码如下: >>> print ord('A') 65 >& ...

  9. python将数据保存为json文件时,打开json文件里面的中文发现是unicode码

    最近要将爬取的数据通过json.dump处理后保存成json文件,程序一切运行正常,但是打 开保存之后的json文件发现除了字母,原来的字典数据里面的中文全部变成了unicode 码,像下面这个样子 ...

最新文章

  1. sparkcore分区_Spark学习:Spark源码和调优简介 Spark Core (二)
  2. DOS批处理延时技术
  3. 分布式一致性算法Raft简介(下)
  4. streaming api_通过Spring Integration消费Twitter Streaming API
  5. vagrant box php,vagrant box php开发环境配置 -- nginx
  6. 拉氏变换法求解线性常微分方程(系统的零状态响应)
  7. vuex文档阅读学习1
  8. 1337. 矩阵中战斗力最弱的 K 行
  9. 【OFDM通信】基于matlab OFDM通信系统仿真【含Matlab源码 315期】
  10. matlab调和均值滤波_均值滤波和中值滤波的MATLAB实现
  11. php超小免杀大马_2019年最新免杀PHP大马(过D盾,过安全狗)
  12. macOS 使用软件(外加装逼特效)
  13. ubuntu11.04(unix 就可以了) 共享文件以及支持上传文件
  14. html5播放器声音小,页面声音播放(HTML5 embed标签)
  15. 优化GNU/Linux桌面安装的九个步骤
  16. 计算机ppt制作教案,教案幻灯片制作
  17. Window XP驱动开发(二) 环境搭建(VS2008+WDK+DDKWzard)及示例源码分析
  18. SQL Server中@@ROWCOUNT的用法
  19. mysql2014 三合一_SQL Server 2014 全系列 MSDN iso镜像
  20. Qt实战案例(2)——电子时钟的设计

热门文章

  1. 苹果服务两天内经历两次宕机:部分服务受影响 现已修复
  2. 投资大佬段永平:抄底腾讯,不等了!
  3. 京东:应届博士生年薪最高达200万元!确认过眼神,是我羡慕不来的人
  4. 小红书重拳治理虚假种草 再起诉3家通告平台、MCN机构
  5. 只卖了2000辆,竟扬言吊打特斯拉!贾跃亭昔日偶像,还在忽悠?
  6. Android 12 将支持游戏“边下边玩”
  7. 击败特斯拉!它拿下全球电动车型销量冠军,但售价仅是Model 3的零头
  8. 史上最短命iPhone,销量惨淡、即将停产!
  9. 全员5G!iPhone 12系列终于来了:没有阉割,售价依旧5499元起!
  10. OPPO或将于本月推出Find X2 英雄联盟 S10 限定版