The text file contains two columns- index number(5 spaces) and characters(30 spaces).

It is arranged in lexicographic order. I want to perform binary search to search for the keyword.

解决方案

Here's an interesting way to do it with Python's built-in bisect module.

import bisect

import os

class Query(object):

def __init__(self, query, index=5):

self.query = query

self.index = index

def __lt__(self, comparable):

return self.query < comparable[self.index:]

class FileSearcher(object):

def __init__(self, file_pointer, record_size=35):

self.file_pointer = file_pointer

self.file_pointer.seek(0, os.SEEK_END)

self.record_size = record_size + len(os.linesep)

self.num_bytes = self.file_pointer.tell()

self.file_size = (self.num_bytes // self.record_size)

def __len__(self):

return self.file_size

def __getitem__(self, item):

self.file_pointer.seek(item * self.record_size)

return self.file_pointer.read(self.record_size)

if __name__ == '__main__':

with open('data.dat') as file_to_search:

query = raw_input('Query: ')

wrapped_query = Query(query)

searchable_file = FileSearcher(file_to_search)

print "Located @ line: ", bisect.bisect(searchable_file, wrapped_query)

在python中查看关键字、需要执行,如何在一个文本文件,二进制执行搜索来搜索一个Python关键字?...相关推荐

  1. python中查看表头的函数_Python中也可以写Excel中的“Vlookup”函数?太牛逼了吧!...

    原标题:Python中也可以写Excel中的"Vlookup"函数?太牛逼了吧! Vlookup函数,可以算是一个数据专员必须要会使用的基本函数了,确实很好用.但是你可能会注意到, ...

  2. python中查看关键字需要在python解释器中执行_Day09-python基础之Cpython解释器支持的进程与线程...

    一.进程与线程理论基础 1.背景知识 进程的概念起源于操作系统,是操作系统最核心的概念. 进程是对正在运行程序的一个抽象,操作系统的其他所有内容都是围绕进程的概念展开的.所以想要真正了解进程,必须事先 ...

  3. 在python中查看关键字需要在python解释器中执行_现有代码 d={},在Python3解释器中执行 d[([1,2])] = 'b'得到的结果为( )。...

    [单选题]下列字符中对应ASCII码数值最小的是哪个选项?( ) [单选题]Python解释器执行'{0},{2},{1}'.format('a','b','c')的结果为( ). [单选题]Pyth ...

  4. 在python中查看关键字、需要执行_python关键字以及含义,用法

    Python常用的关键字 1.and , or and , or 为逻辑关系用语,Python具有短路逻辑,False and 返回 False 不执行后面的语句, True or 直接返回True, ...

  5. python中查看关键字需要在python解释器中执行_python从零开始--(02)--基础篇

    继续我们的学习 今天我们需要学的内容是: 1.input,print  (输入,输出). 2.变量. 3.python中的数学运算符. (另外,我们需要在这个过程中学会python解释器使用) 打开解 ...

  6. python中for循环和while循环else语句的执行过程和陷阱

    文章目录 什么时候执行else,什么时候不执行else语句 for...else...正确代码示例和说明 for循环搭配else常见错误和陷阱 在Python中,有while和for两种循环,并且都可 ...

  7. python中字典不自动排序/删除指定类型文件/执行可执行文件的返回值

    1.python 字典的用法 from collections import OrderedDict dict =OrderedDict() dict['foo']=3 dcit['aol']=1 2 ...

  8. python中elif老是出错_python为什么会存在if执行了依然会执行elif的情况?

    如题,是在一个案例的for循环中,if执行了,按理elif不应该执行,但是结果依然执行了elif,不太理解,是忽略了什么吗 for msg in track: print '------------- ...

  9. python中home定义是什么_第48p,什么是函数?,Python中函数的定义

    原标题:第48p,什么是函数?,Python中函数的定义 大家好,我是 杨数 Tos ,这是<从 零 基础到大神>系列课程的第 48 篇文章 ,第三阶段的课程 : Python进阶知识:详 ...

  10. python中什么是字符举例说明_第20p,什么是字符串?Python中的str

    原标题:第20p,什么是字符串?Python中的str 大家好,我是杨数Tos,这是<从零基础到大神>系列课程的第20篇文章,第二阶段的课程:Python基础知识:Python的字符串(上 ...

最新文章

  1. 3 命名空间与命名规范
  2. java 安装后找不到文件_(已解决)jdk安装 系统找不到文件C:\ProgramData\Oracle\Java\javapath\java.exe...
  3. python事件循环_简单了解一下事件循环(Event Loop)
  4. 奖品兑现 – 我家没有好茶饭,只有《编程之美》送亲人
  5. 华为鸿蒙游戏引擎,打破技术封锁!鸿蒙OS后,国产顶级游戏引擎也已问世!
  6. c++ string类 知识点整理
  7. 面试之js 数组插入删除
  8. mysql密码认证插件_关于mysql:无法加载身份验证插件’caching_sha2_password’
  9. Kubernetes--k8s---存活探针和就绪探针的最佳实践
  10. 用python绘制玫瑰花的代码_Python 玫瑰花绘制
  11. SEO商务谈判技巧,常见的5个措施有哪些?
  12. socket连接超时问题
  13. win10共享打印机搜索不到计算机,win10为什么搜索不到共享打印机
  14. 凸优化 matlab-cvx-第十一章ADVANCED TOPICS
  15. faceu激萌相机里面vue_激萌相机怎么玩?激萌相机faceu使用教程[多图]
  16. 地理国情普查外业调绘轨迹线的整理方法
  17. 现在做什么副业比较赚钱?多说人都选择这4个副业!
  18. MyEclipse版本下载
  19. 五种常见的DNS攻击类型及应对方式
  20. 深圳市及各区贷款补贴

热门文章

  1. Kubernetes 常见问题总结
  2. chmod 用法示例
  3. Nginx 负载均衡和缓存服务实战
  4. 【Hive】解析字符串(类似array嵌套map结构)
  5. 【SQL】正则表达式-校验数字,字符,特殊需求等
  6. eclipse 调试nodejs 发生Failed to connect to standalone V8 VM错误的解决方案
  7. HttpClient FormUrlEncodedContent System.UriFormatException: 无效的 URI: URI 字符串太长问题解决方案
  8. H5 播放视频常见bug及解决方案
  9. R(1):中文乱码解决方案
  10. 有未经处理的异常(在 xx.exe 中): 堆栈 Cookie 检测代码检测到基于堆栈的缓冲区溢出。