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服务

    如果选择npm安装的最新版appium 1.8.0以上版本,启动appium的时候,你会发现无法使用Node.js命令 这里给出两种方法来启动appim: 方法一: /** * 使用AppiumSer ...

  2. jquery 清空、添加、删除select

    $("#selectid").empty();//清空 $("#selectid").append("<option value='" ...

  3. C#入门课程之基础认识

    命名规则: 注意变量名的第一个字符必须是字母.下划线.以及@字符 字面值: 字符串字面值: 用Unicode表示一个字符方式:\uxxxx,其中xxxx表示4位的十六进制数,下面两种表示方式一致: u ...

  4. iOS内置麦克风选择方法

    模式中的 voicechat用于VoIP是由系统进行默认选择的最适合的麦克风 模式中的AVAudioSessionModeVideoRecording默认选择上麦克风,离摄像头最近的那个,主要用于VO ...

  5. c# post方法亲测可用

    /// <summary> /// Post接口方法 /// </summary> /// <param name="requestUri">& ...

  6. oracle sql语句大全

    ORACLE支持五种类型的完整性约束 NOT NULL (非空)--防止NULL值进入指定的列,在单列基础上定义,默认情况下,ORACLE允许在任何列中有NULL值. CHECK (检查)--检查在约 ...

  7. /lib/lsb/init-functions

    lsb_functions="/lib/lsb/init-functions" if test -f $lsb_functions ; then . $lsb_functions

  8. Oracle启动和停止

    概述 只有具备sysdba和sysoper系统特权的用户才能启动和关闭数据库. 在启动数据库之前应该启动监听程序,否则就不能利用命令方式来管理数据库,包括启动和关闭数据库. 虽然数据库正常运行,但如果 ...

  9. docker_sd

    docker exec --user jovyan -d jupyter nohup jupyter nbconvert --ExecutePreprocessor.timeout=-1 --Code ...

  10. C++ STL库的总结以及实现原理

    STL的容器可以分为以下几个大类:一:序列容器, 有vector, list, deque, string. 二 : 关联容器,     有set, multiset, map, mulmap has ...