【发布时间】:2012-09-09 08:19:27
【问题描述】:
我有一个在eng.dic 中看起来像这样的人类字典文件(该列表中有接近十亿 个单词的图像)。而且我必须经常运行不同的单词查询。
apple
pear
foo
bar
foo bar
dictionary
sentence
我有一个字符串,比如说“foo-bar”,有没有更好(更有效的方法)搜索该文件以查看它是否存在,如果它返回存在,如果它不存在,则附加字典文件
dic_file = open('en_dic', 'ra', 'utf8')
query = "foo-bar"
wordlist = list(dic_file.readlines().replace(" ","-"))
en_dic = map(str.strip, wordlist)
if query in en_dic:
return 1
else:
print>>dic_file, query
python 中有内置的搜索功能吗?或任何我可以导入以运行此类搜索而无需太多开销的库?
【问题讨论】:
-
如果你只用一个词来做这件事,我怀疑你是否能比现有的实现做得更好。但是,如果您要循环并多次执行此功能,您可能会以一种允许更有效查找的方式存储字符串。一个非常简单的例子是保持列表排序。
-
十亿字?真的吗?您将用完大约一百万个英语单词..
-
@wim,不正确。将“foo”视为 1 个单词,将“bar”视为 1 个单词,将“foo bar”视为不同的单词。所以单词列表在某种意义上几乎是无限的,但仅限于我拥有的数据输入,目前它有十亿个单词的语料库,所以我列出了最坏的情况。
-
你能改变表示吗?一个
shelve,或者sqlite3数据库? -
@2er0:重点是问题,虽然看起来不同,但非常相似(我什至会说他的问题更复杂,但要解决您的问题,您需要使用与一个基地)。除非您知道自己在做什么,否则每次您想检查是否存在某事时都浏览该文件并不是一个好主意。如果您将其存储在数据库中,您将获得更加灵活和高效的解决方案(这也将存储在文件中,但您将能够使用 SQLite 高效机制)。只需索引文件并使用数据库进行检查。
标签: python file search dictionary string-search