python编程实现郑码查询——将码表放在文本文件或mysql数据库中

打开小小输入法的郑码表观察,如
a 一 再
aa 一下
aaam 万无一失
aaav 可歌可泣
aaax 天下无难事
aacf 百无聊赖
aacm 无可奉告
aadj 无可挽回
aadt 殊死搏斗
aaeu 平型关
aaez 一开始
。。。
编程实现一个命令窗程序,使得能进行郑码查询,如输入aacm,则输出“无可奉告”。

方法一:将码表放在一个文本文件中,如zmb.txt,实现该功能。

代码如下:

# -*- coding: UTF-8 -*- 
with open("zmb.txt","r") as f:     # 打开zmb.txt文件
    d=f.readlines();

# 查找函数
def findword(content):
    english=""
    chinese="" 
    flag=0
    for zmb_list in d:
        english=zmb_list.split("<")[1].split(">")[0]  # 把“<”和">"作为分隔符对字符串进行切片
        chinese=zmb_list.split(">")[1].split("<")[1]
        if content == chinese:
            flag=1
            return english
        if content == english:
            flag=1
            return chinese
    if flag==0:
		chinese="查不到该词!"
    return chinese

 
while(True): 
   s =raw_input("Please input:")
   if s=="ByeBye":
		print "退出程序!"
		exit()   
   print(findword(s))

文本文件zmb.txt如下:
这里写图片描述
查询过程如下:
这里写图片描述

方法二:将码表放在一个mysql数据库中。

代码如下:

# -*- coding: UTF-8 -*-
import MySQLdb
# 打开数据库连接
db = MySQLdb.connect("localhost","root","123456","zmdb", charset='utf8' )

# 使用cursor()方法获取操作游标
cursor = db.cursor()
# SQL 查询语句
sql = "SELECT *FROM zmb"

try:
    # 执行 SQL语句 
    cursor.execute(sql)
    #获取所有记录列表
    results = cursor.fetchall()
    # 循环操作
    while (True):
        s=raw_input("Please input:").decode("gbk")
        english=""
        chinese=""  
        flag=0
        for row in results:
            english=row[0]
            chinese=row[1]
            if s==english:
                flag=1
                print chinese
            if s==chinese:
                flag=1
                print english
        if s=="ByeBye":
            print("退出程序!")
            exit()
        elif flag==0:
            print("查不到该词!")  

except:
    print("Error:unable to fetch data")
# 关闭数据库连接
cursor.close()
db.close()

mysql数据库中的郑码表:
这里写图片描述

查询过程如下:
这里写图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值