- 浏览: 136700 次
- 性别:
- 来自: 深圳
最新评论
-
ryan.liu:
Postfix 2.11 Under CentOS 6yum ...
Postfix安装脚本 -
xfzhu2003:
# date -d '-2 day 2012-07-11' + ...
Linux下的date命令究竟可以干什么 -
ryan.liu:
在Firefox下面OK,在IE下面有问题
Jquery联动下拉菜单 -
ryan.liu:
在最新的JQuery 1.7 中,var idx = $(ma ...
Jquery联动下拉菜单 -
mirguest:
身份证最后一位应该是x,不是*吧?
验证18位身份证号码
#-*- coding: utf-8 -*- from bisect import bisect FIRST_LETTERS = ["a", "b", "c", "d", "e", "f", "g", "h", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "w", "x", "y", "z"] FIRST_NUMBERS = [1, 37, 233, 478, 674, 702, 833, 994, 1187, 1506, 1612, 1872, 2035, 2122, 2130, 2258, 2427, 2486, 2790, 2958, 3084, 3325, 3649] PINYIN_LETTERS = [ ['a', 'ai', 'an', 'ang', 'ao'], ['ba', 'bai', 'ban', 'bang', 'bao', 'bei', 'ben', 'beng', 'bi', 'bian', 'biao', 'bie', 'bin', 'bing', 'bo', 'bu'], ['ca', 'cai', 'can', 'cang', 'cao', 'ce', 'ceng', 'cha', 'chai', 'chan', 'chang', 'chao', 'che', 'chen', 'cheng', 'chi', 'chong', 'chou', 'chu', 'chuan', 'chuang', 'chui', 'chun', 'chuo', 'ci', 'cong', 'cou', 'cu', 'cuan', 'cui', 'cun', 'cuo'], ['da', 'dai', 'dan', 'dang', 'dao', 'de', 'deng', 'di', 'dian', 'diao', 'die', 'ding', 'diu', 'dong', 'dou', 'du', 'duan', 'dui', 'dun', 'duo'], ['e', 'en', 'er'], ['fa', 'fan', 'fang', 'fei', 'fen', 'feng', 'fo', 'fou', 'fu'], ['ga', 'gai', 'gan', 'gang', 'gao', 'ge', 'gei', 'gen', 'geng', 'gong', 'gou', 'gu', 'gua', 'guai', 'guan', 'guang', 'gui', 'gun', 'guo'], ['ha', 'hai', 'han', 'hang', 'hao', 'he', 'hei', 'hen', 'heng', 'hong', 'hou', 'hu', 'hua', 'huai', 'huan', 'huang', 'hui', 'hun', 'huo'], ['ji', 'jia', 'jian', 'jiang', 'jiao', 'jie', 'jin', 'jing', 'jiong', 'jiu', 'ju', 'juan', 'jue', 'jun'], ['ka', 'kai', 'kan', 'kang', 'kao', 'ke', 'ken', 'keng', 'kong', 'kou', 'ku', 'kua', 'kuai', 'kuan', 'kuang', 'kui', 'kun', 'kuo'], ['la', 'lai', 'lan', 'lang', 'lao', 'le', 'lei', 'leng', 'li', 'lia', 'lian', 'liang', 'liao', 'lie', 'lin', 'ling', 'liu', 'long', 'lou', 'lu', 'lv', 'lue', 'lv', 'lu', 'luan', 'lue', 'lun', 'luo'], ['ma', 'mai', 'man', 'mang', 'mao', 'me', 'mei', 'men', 'meng', 'mi', 'mian', 'miao', 'mie', 'min', 'ming', 'miu', 'mo', 'mou', 'mu'], ['na', 'nai', 'nan', 'nang', 'nao', 'ne', 'nei', 'nen', 'neng', 'ni', 'nian', 'niang', 'niao', 'nie', 'nin', 'ning', 'niu', 'nong', 'nu', 'nv', 'nuan', 'nue', 'nuo'], ['o', 'ou'], ['pa', 'pai', 'pan', 'pang', 'pao', 'pei', 'pen', 'peng', 'pi', 'pian', 'piao', 'pie', 'pin', 'ping', 'po', 'pou', 'pu'], ['qi', 'qia', 'qian', 'qiang', 'qiao', 'qie', 'qin', 'qing', 'qiong', 'qiu', 'qu', 'quan', 'que', 'qun'], ['ran', 'rang', 'rao', 're', 'ren', 'reng', 'ri', 'rong', 'rou', 'ru', 'ruan', 'rui', 'run', 'ruo'], ['sa', 'sai', 'san', 'sang', 'sao', 'se', 'sen', 'seng', 'sha', 'shai', 'shan', 'shang', 'shao', 'she', 'shen', 'sheng', 'shi', 'shou', 'shu', 'shua', 'shuai', 'shuan', 'shuang', 'shui', 'shun', 'shuo', 'si', 'song', 'sou', 'su', 'suan', 'sui', 'sun', 'suo'], ['ta', 'tai', 'tan', 'tang', 'tao', 'te', 'teng', 'ti', 'tian', 'tiao', 'tie', 'ting', 'tong', 'tou', 'tu', 'tuan', 'tui', 'tun', 'tuo'], ['wa', 'wai', 'wan', 'wang', 'wei', 'wen', 'weng', 'wo', 'wu'], ['xi', 'xia', 'xian', 'xiang', 'xiao', 'xie', 'xin', 'xing', 'xiong', 'xiu', 'xu', 'xuan', 'xue', 'xun'], ['ya', 'yan', 'yang', 'yao', 'ye', 'yi', 'yin', 'ying', 'yo', 'yong', 'you', 'yu', 'yuan', 'yue', 'yun'], ['za', 'zai', 'zan', 'zang', 'zao', 'ze', 'zeng', 'zha', 'zhai', 'zhan', 'zhang', 'zhao', 'zhe', 'zhen', 'zheng', 'zhi', 'zhong', 'zhou', 'zhu', 'zhua', 'zhuai', 'zhuan', 'zhuang', 'zhui', 'zhun', 'zhuo', 'zi', 'zong', 'zou', 'zu', 'zuan', 'zui', 'zun', 'zuo'] ] PINYIN_NUMBERS = [ [2, 3, 16, 25, 28], [37, 55, 63, 78, 90, 113, 128, 132, 138, 162, 174, 178, 182, 188, 203, 222], [233, 234, 245, 252, 257, 262, 267, 269, 280, 283, 293, 312, 321, 327, 337, 352, 368, 373, 385, 408, 415, 421, 426, 433, 435, 447, 453, 454, 458, 461, 469, 472], [478, 484, 502, 517, 522, 534, 537, 544, 563, 579, 588, 601, 610, 611, 621, 629, 643, 649, 653, 662], [674, 687, 688], [702, 710, 727, 738, 750, 765, 780, 781, 782], [833, 835, 841, 852, 861, 871, 888, 889, 891, 904, 919, 928, 946, 952, 955, 966, 969, 985, 988], [994, 1001, 1008, 1027, 1030, 1039, 1057, 1059, 1063, 1068, 1077, 1084, 1108, 1117, 1122, 1136, 1150, 1171, 1177], [1187, 1246, 1263, 1309, 1322, 1350, 1377, 1403, 1428, 1430, 1447, 1472, 1479, 1489], [1506, 1510, 1515, 1521, 1528, 1532, 1547, 1551, 1553, 1557, 1561, 1568, 1573, 1577, 1579, 1587, 1604, 1608], [1612, 1619, 1622, 1637, 1644, 1653, 1655, 1666, 1669, 1709, 1710, 1724, 1735, 1748, 1753, 1765, 1779, 1790, 1805, 1811, 1831, 1842, 1843, 1844, 1845, 1851, 1853, 1860], [1872, 1881, 1887, 1902, 1908, 1920, 1921, 1937, 1940, 1948, 1962, 1971, 1979, 1981, 1987, 1993, 1994, 2017, 2020], [2035, 2042, 2047, 2050, 2051, 2056, 2057, 2059, 2060, 2061, 2072, 2080, 2081, 2083, 2090, 2091, 2103, 2107, 2111, 2114, 2115, 2116, 2119], [2122, 2123], [2130, 2136, 2142, 2150, 2155, 2162, 2171, 2173, 2187, 2210, 2214, 2218, 2220, 2225, 2234, 2243, 2244], [2258, 2294, 2303, 2325, 2333, 2348, 2353, 2364, 2377, 2379, 2387, 2407, 2417, 2425], [2427, 2431, 2436, 2439, 2441, 2451, 2453, 2454, 2464, 2467, 2477, 2479, 2482, 2484], [2486, 2489, 2493, 2503, 2506, 2510, 2513, 2514, 2515, 2524, 2526, 2542, 2550, 2561, 2573, 2589, 2606, 2653, 2663, 2702, 2704, 2708, 2710, 2713, 2717, 2721, 2725, 2741, 2749, 2753, 2765, 2768, 2779, 2782], [2790, 2805, 2814, 2832, 2845, 2856, 2857, 2861, 2876, 2884, 2889, 2892, 2908, 2921, 2925, 2936, 2938, 2944, 2947], [2958, 2965, 2967, 2984, 2994, 3033, 3043, 3046, 3055], [3084, 3125, 3138, 3164, 3184, 3208, 3229, 3239, 3254, 3261, 3270, 3289, 3305, 3311], [3325, 3341, 3374, 3391, 3412, 3427, 3480, 3502, 3520, 3521, 3536, 3556, 3607, 3627, 3637], [3649, 3652, 3659, 3663, 3666, 3680, 3686, 3690, 3710, 3716, 3733, 3748, 3758, 3768, 3784, 3805, 3848, 3859, 3873, 3905, 3907, 3908, 3914, 3921, 3927, 3929, 3940, 3955, 3962, 3966, 3974, 3976, 3980, 3982] ] def gb2312_pinyin(unichar, first_letter=False): assert(isinstance(unichar, unicode)) gbkchar = unichar.encode("GBK") high_code = ord(gbkchar[0]) - 160 #GBK区码 low_code = ord(gbkchar[1]) - 160 #GBK位码 char_code = (high_code - 16) * 100 + low_code if -1299 <= char_code <= -1206: return chr(char_code + 1332) #全角转半角 elif char_code < 1 or char_code > 3989: return "" #不是汉字,或者未被GB2312收录的生僻字 idx = bisect(FIRST_NUMBERS, char_code) if first_letter: #找首字母 result = FIRST_LETTERS[idx - 1] else: #完整拼音 inidx = bisect(PINYIN_NUMBERS[idx - 1], char_code) result = PINYIN_LETTERS[idx - 1][inidx - 1] return result def to_unicode(word): if not isinstance(word, unicode): try: #尝试当作UTF-8编码转为UNICODE word = unicode(word, "UTF-8") except UnicodeDecodeError: try: #尝试当作GBK编码转为UNICODE word = unicode(word, "GBK") except UnicodeDecodeError: word = "" return word def split_sentence(sentence): """ 将中英文混合的句子分割成单个汉字和连续英文 """ word = "" for character in sentence: if ord(character) <= 255: #ASCII word += character else: yield True, word word = "" yield False, character yield True, word def words_to_pinyin(words, first_letter=False, seperator=""): uniwords = to_unicode(words) letters = [] for is_ascii, word in split_sentence(uniwords): if word: if not is_ascii: word = gb2312_pinyin(word, first_letter) letters.append(word) return seperator.join(letters) def words_pinyin_for_sort(words, first_letter=False): uniwords = to_unicode(words) word_pinyin = words_to_pinyin(uniwords, first_letter, seperator="~") if len(uniwords) > 0 and ord(uniwords[0]) > 255: word_pinyin = "~" + word_pinyin return word_pinyin if "__main__"==__name__: print words_to_pinyin("好V5的中文", first_letter=True) print words_to_pinyin("好V5的中文!", seperator=" ") print words_pinyin_for_sort("好V5的中文!")
发表评论
-
PHP下的cURL库
2014-03-29 11:49 1044PHP下的cURL库主要有两个Requests和Guzzl ... -
PHP的curl造成性能瓶颈,如何优化?
2012-08-21 10:49 4060问题: http://segmentfault.com/qu ... -
Flask中使用SqlAlchemy的较好方法
2012-05-15 18:51 27648首先安装 Flask-SqlAlchem? v0.15 和 S ... -
Python计算MD5
2012-05-15 22:50 6805# -*- coding: utf-8 -*- i ... -
flask的MethodView封装
2018-11-02 14:37 1020# -*- coding: utf-8 -*- ... -
python分页
2012-05-16 10:49 1647一个简单的分页 # -*- coding: utf-8 ... -
检查网址是否存在
2012-05-16 10:51 955# -*- coding: utf-8 -*- f ... -
Python多进程记录日志
2012-05-15 22:51 7605用gevent(或封装了gevent的gunicore) ... -
Python设置编码和PYTHONPATH
2012-05-15 22:51 3422Python中的编码是个恼人的问题,第一个是文件编码,在 ... -
Python2.6字典的键为unicode,解包时报错
2012-03-30 13:54 1336把代码放到局域网服务器,原本在本地运行正常的代码在局域网 ... -
sqlalchemy
2018-11-02 14:37 449通常我们在数据库中设计好了多张表,在SQLAlchem ... -
通过POP3协议读取指定邮件
2012-03-04 22:50 1339先要安装maillib库 假设我要获得一周来,豆瓣发送 ... -
Python列表去重复
2011-12-01 11:57 1813def unique_list(seq, excludes=[ ... -
Jquery联动下拉菜单
2011-11-08 10:45 3690用Jquery 1.4.4 实现的联动下拉菜单,估计在Jque ... -
Python在URL中加入新参数
2011-07-04 14:28 4922import urllib import urlparse ... -
PyCURL访问外网
2011-07-04 14:26 1521用途当然是模拟浏览器 # -*- coding: utf-8 ... -
验证18位身份证号码
2011-01-15 17:57 1190#! /usr/bin/python # -*- cod ... -
从生日得到星座
2011-01-15 17:55 961#! /usr/bin/python # -*- cod ... -
Python中的编码错误问题
2011-01-15 17:54 1150设置python运行环境的编码参考这里 http://di ... -
Python中遇到奇怪的错误ValueError: bad marshal data
2011-01-11 14:53 4151不是代码出的问题,是*.pyc文件被改动了。解决方法,删除所有 ...
相关推荐
汉字转全拼音或拼音首字母,支持gb2312和utf8编码 ,附带函数说明, 汉字转换为全拼音或拼音首字母 使用方法: include(ROOT_PATH.'includes/cls_chart_pinyin.php'); echo Pinyin('中国人','utf-8',false); 函数...
《GB2312汉字拼音对照表》是一个重要的IT资源,尤其对于中文处理和数据库管理领域具有极高价值。GB2312是中国国家标准的一种字符编码,全称为“信息交换用汉字编码字符集基本集”,是早期广泛使用的中文编码标准,为...
### GB2312汉字拼音对照表解析 #### 一、引言 GB2312是中国国家标准局于1980年发布的一种用于汉字信息处理的编码标准,旨在为汉字提供一种统一的编码方式。它支持大约7445个简体汉字以及682个符号,并分为两级:一...
较完整的汉字转拼音(全拼)_gb2312 C# - Silver Bullet的日志 - 网易博客.rar....................................................................................
1. GB2312汉字拼音对照表7809字.txt (附加声调) 2. GB2312汉字拼音对照表.txt 3. py.sql (为直接的SQL可以直接入数据库) 其中py.sql格式如下:汉字 拼音 字母 insert into pinyin (hz, py, zm) values ('啊', 'a'...
GB2312编码是中国国家标准简体中文字符编码,全称为《信息交换用汉字编码字符集 基本集》,由中华人民共和国国家标准GB 2312-80定义。它是中国第一个正式的汉字编码标准,主要用于简化字的计算机编码表示,容纳了...
汉字转拼音首字母(UTF-8支持多音字,GB2312不支持多音字),程序hz2py_GB2312_Non-polyphone.cpp在Windows系统下VC 6.0运行通过,程序hz2py_UTF-8_Polyphone.c在Ubuntu的Linux系统下运行通过,前者不支持多音字,后者...
标题“vb全功能汉字转拼音”...总之,VB全功能汉字转拼音程序是一个高效、全面的工具,利用编程技术和汉字拼音数据库,为用户提供便捷的汉字转拼音服务。对于需要处理汉字拼音的用户而言,这是一个值得尝试的解决方案。
GB2312编码,正式名称为《信息交换用汉字编码字符集·基本集》,是中国国家标准局在1981年5月1日发布的第一个针对简体中文的字符编码标准。它别名GB0,是为了解决计算机系统中中文信息处理的问题而设计的编码方案,...
GB2312-80字符集总共包含了6763个汉字,这些汉字按照偏旁部首和拼音顺序进行了编码。除此之外,还包括了682个图形符号。整个字符集采用双字节编码方式,每个汉字或符号占用两个字节的空间,编码范围为A1A1至FEFE(不...
这个库通常基于国家标准GB2312或GBK,包含常用的一级和二级汉字,以及部分三级汉字。 2. 音节划分:由于汉字的拼音中可能包含声母、韵母和声调,因此在转换过程中,需要正确地将拼音拆分为各个音节。例如,“好”字...
- **编码问题**: 函数中对汉字的处理基于双字节的GB2312编码。在现代环境中使用时,可能需要考虑Unicode编码的兼容性问题。 - **效率考量**: 直接使用预置的拼音数据和索引查找,虽然实现了功能,但在处理大量汉字时...
GB2312编码的问世,为简体中文汉字提供了一套统一的编码方案,利用计算机二进制技术,有效解决了中文字符的输入、存储、交换和显示问题。这不仅促进了中文电脑化,也为后续中文计算机技术的发展奠定了坚实的基础。 ...
GB2312编码表是一种使用双字节对汉字及其符号进行编码的标准,它的全称是《信息交换用汉字编码字符集 基本集》。GB2312编码涵盖了6763个汉字和682个其它符号,其中包括英文字符和一些特殊符号。该编码由中华人民...
总结起来,掌握GB2312编码表和汉字首字母转换技术,对于开发中文信息处理系统至关重要。通过解析编码表、转换拼音并提取首字母,我们可以有效地处理和利用中文数据,提高系统的效率和用户体验。而“获取汉字首字母 ...
GB2312汉字编码表是中国早期制定的一种汉字编码标准,全称为《信息交换用汉字编码字符集·基本集》,由中华人民共和国国家标准总局于1980年发布,旨在解决中文信息处理的问题。GB2312是中文信息处理领域的里程碑,为...
《中文拼音数据库》是一个专为处理中文汉字与拼音关系的数据库资源,主要基于GB2312编码标准。这个数据库包含了7809个汉字,覆盖了日常生活中常见的汉字使用范围。它不仅提供了每个汉字的拼音,还包含了汉字的正确...
GB2312标准库是汉字编码系统中的一个重要组成部分,主要应用于中国大陆的简体中文字符集。该标准库由国家标准局于1980年发布,全称GB2312-80(《信息处理用汉字编码字符集基本集》),收录了6763个常用汉字以及682个...
2. **汉字转拼音库**:为了实现汉字到拼音的转换,可能需要引入第三方库,比如开源的pinyin4cpp或基于ICU库的解决方案。在Qt中,可以通过动态链接或者静态编译这些库来使用它们的功能。例如,pinyin4cpp库提供了一种...