import os
from tkinter import Tk
from tkinter import Label
from tkinter import Button
from tkinter import Entry
from tkinter import StringVar # public Dictionary<string, string> GenerateAreaDict(string filePath) {
# Dictionary<string, string> areaDict = new Dictionary<string, string>(); # if (File.Exists(filePath)) {
# string[] areaCode = File.ReadAllLines(filePath); # foreach (string code in areaCode) {
# areaDict.Add(code.Substring(0, 6), code);
# }
# } # return areaDict;
# } def generateAreaDict():
text = '' with open(fullFilePath, 'r') as file:
text = file.read() text = text.replace(' ', '').replace('\t', '').split('\n') for line in text:
if len(line) > 0:
area[line[:6]] = line[6:] # public string[] Search(string areaName, Dictionary<string, string> areaDict) {
# List<string> areaIndex = new List<string>(); # foreach (KeyValuePair<string, string> kvp in areaDict) {
# if (kvp.Value.Contains(areaName)) {
# areaIndex.Add(kvp.Key);
# }
# } # return areaIndex.ToArray();
# } def search():
name = entryVar.get().replace(' ', '') if len(name) > 0:
result.clear() for key, value in area.items():
if value.find(name) != -1:
result.append([key, value]) if len(result) > 0:
deepSearch()
else:
labelVar.set('Not find.') # public string[] DeepSearch(string[] areaIndex, Dictionary<string, string> areaDict) {
# List<string> areaInfo = new List<string>();
# string temp = ""; # foreach (string index in areaIndex) {
# temp = ""; # if (index.Substring(2, 2).Equals("00")) {
# temp += areaDict[index];
# } else if (index.Substring(4, 2).Equals("00")) {
# string i = index.Substring(0, 2) + "0000"; # if (areaDict.ContainsKey(i)) {
# temp += (areaDict[i] + "\t");
# }
# temp += areaDict[index];
# } else {
# string i = index.Substring(0, 2) + "0000";
# string j = index.Substring(0, 4) + "00"; # if (areaDict.ContainsKey(i)) {
# temp += (areaDict[i] + "\t");
# }
# if (areaDict.ContainsKey(j)) {
# temp += (areaDict[j] + "\t");
# }
# temp += areaDict[index];
# } # areaInfo.Add(temp);
# } # return areaInfo.ToArray();
# } def deepSearch():
for r in result:
code = r[0] if code[4:] != '':
key = code[:4]+''
if key in area:
r.append(key)
r.append(area[key]) key = code[:2]+''
if key in area:
r.append(key)
r.append(area[key]) elif code[2:] != '':
key = code[:2]+''
if key in area:
r.append(key)
r.append(area[key]) showResult() def showResult():
text = '' for r in result:
line = '' for i in range(1, len(r), 2):
line = r[i] + ' ' + line text = text + line + '\n' labelVar.set(text) def searchCallback(event):
search() # public class AreaSearchToolApp {
# public void Run() {
# string filePath = "AreaCode.txt";
# string areaName = "萧山"; # Dictionary<string, string> areaDict = GenerateAreaDict(filePath); # string[] areaIndex = Search(areaName, areaDict);
# string[] areaInfo = DeepSearch(areaIndex, areaDict);
# } window = Tk()
window.title('Search Tool')
window.geometry('350x200') labelVar = StringVar() # should after Tk() function
entryVar = StringVar()
area = {}
result = []
cwd = os.getcwd()
filename = 'AreaCode.txt'
fullFilePath = os.path.join(cwd, filename) Label(window, textvariable=labelVar, justify='left').pack(fill='both', expand='yes') if os.path.exists(fullFilePath) and os.path.isfile(fullFilePath):
generateAreaDict() Entry(window, textvariable=entryVar).pack(fill='x', padx=10, pady=5)
window.bind('<Return>', searchCallback)
Button(window, text='Search', command=search).pack(fill='x', padx=10, pady=5)
else:
labelVar.set('Please put ' + filename + ' under ' + cwd + '.') window.mainloop()

https://files.cnblogs.com/files/howld/SearchTool.zip

PowerShell实现简单的搜索地区功能的更多相关文章

  1. 基于Vuejs的搜索匹配功能

    最近一直在看vue,查了很多资料,看了很多文档和博客,大概半知半解了,然后利用所理解的知识写了一个简单的搜索匹配功能. 大概长这个样子:   <!DOCTYPE html> <htm ...

  2. jQuery实现简单前端搜索功能

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. Vue2.0实现1.0的搜索过滤器功能

    Vue2.0删除了很多1.0的比较实用的过滤器,如filterBy,orderBy.官方文档给了通过计算属性实现1.0搜索过滤器功能,自己又加入了大小写通用检索功能,比较简单,学一下. <bod ...

  4. 使用 JavaScript 实现简单候选项推荐功能(模糊搜索)【收藏】【转】

    当我们使用 Google 等搜索功能时,会出现与搜索内容有关的候选项.使用 JavaScript 搜索字符串,通常会使用 indexOf 或者 search 函数,但是非常僵硬,只能搜索匹配特定词语. ...

  5. JavaScript实现搜索联想功能

    -.虽然Jquery已经有了一个完整的包 实现前端搜索联想功能,但是出于学习还是想了解一下实现此功能的原理性 回想起来 实现此功能很简单,1.前端输入字符串 文本改变 异步请求服务器 将返回的资料显示 ...

  6. 【Android自己定义View实战】之自己定义超简单SearchView搜索框

    [Android自己定义View实战]之自己定义超简单SearchView搜索框 这篇文章是对之前文章的翻新,至于为什么我要又一次改动这篇文章?原因例如以下 1.有人举报我抄袭,原文链接:http:/ ...

  7. 基于PHP实现一个简单的在线聊天功能(轮询ajax )

    基于PHP实现一个简单的在线聊天功能(轮询ajax ) 一.总结 1.用的轮询ajax 二.基于PHP实现一个简单的在线聊天功能 一直很想试着做一做这个有意思的功能,感觉复杂的不是数据交互和表结构,麻 ...

  8. (转)用C#实现实现简单的 Ping 的功能,用于测试网络是否已经连通

    本文转载自:http://blog.csdn.net/xiamin/archive/2009/02/14/3889696.aspx 用C#实现实现简单的 Ping 的功能,用于测试网络是否已经联通 1 ...

  9. 简单实现UITableView索引功能(中英文首字母索引) (二) By HL

    简单实现UITableView索引功能(中英文首字母索引)(一) ByH罗 相关类: NSString+PinYing(获取中英文首字母)   参考上面链接 #import "ViewCon ...

随机推荐

  1. appium 测试过程中遇到的几个问题 ---持续更新!

    一. appium自带的Chromedriver版本和设备Android System Webview版本不一致的问题 报错信息: io.appium.java_client.NoSuchContex ...

  2. Python CGI编程

    CGI(Common Gateway Interface)通用网关接口,它是一段程序,运行在服务器上.如:HTTP服务器,提供同客户端HTML页面的接口. CGI程序可以是python脚本,PERL脚 ...

  3. (3)Linux的哲学思想

    1. 一切皆文件 把几乎所有资源统统抽象为文件形式,包括硬件设备,甚至通信接口等,便于统一管理和定义: 对文件的操作有:open,read,write,close,delete,create 2. 由 ...

  4. jquery 中dataTable显示加载中,图片或文字

    引入js文件 <script type="text/javascript" src="${basePath}/lib/datatables/1.10.0/jquer ...

  5. 20165315 2018-2019-2 《网络对抗技术》Exp1 PC平台逆向破解

    20165315 2018-2019-2 <网络对抗技术>Exp1 PC平台逆向破解 一.实验内容 本次实践的对象是一个名为pwn1的linux可执行文件.该程序正常执行流程是:main调 ...

  6. Vue源码学习(一)———数据双向绑定 Observer

    从最简单的案例,来学习Vue.js源码. <body> <div id='app'> <input type="text" v-model=" ...

  7. Tornado创建一个web服务

    import tornado.web import tornado.ioloop import tornado.httpserver import tornado.options import con ...

  8. 探索未知种族之osg类生物---渲染遍历之裁剪二

    前言 上一节我们大致上过了一遍sceneView::cull()函数,通过研究,我们发现上图中的这一部分的代码才是整个cull过程的核心部分.所以今天我们来仔细的研究一下这一部分. sceneView ...

  9. View操作 swift

    //创建View let view1 =UIView() let view2 =UIView(frame: CGRectMake(,, ,)) let view3 =UIView(frame: CGR ...

  10. Finance财务软件(引入业务系统凭证专题)

    我们通过自定义存储过程从业务系统引入凭证 我们需要以下适配 1.设置业务系统数据库链接 2.在自定义模板中设置存储过程名称及入参,这里的功能键值必须为_InterfaceExec,保留字段作为存储过程 ...