使用文本文档

时间:2016-05-05 21:05:22

标签: python-3.x

我需要快速搜索文本文档中的行与其他输出进行比较,如果我在文本文档中有相同的行,我必须使用索引进行一些计算,所以我必须使用枚举,然后从我的文档中获取其他行列表通过当前索引,所以最后一个是一个点,我想要比现在快得多。数据库是一行的长列表,一行在另一行之下。所以我尝试了很多变种,如果它的一些工作速度更快,它就无法使用枚举。

你能帮助我更快地进行搜索吗?

所以这就是我想要的方式,但这种方式对于超过1500行的数据来说效果非常慢,不是很大,但实际上,工作很慢,如果文本存在于文本文档中,我需要快速查找(y)到文本索引和计算:

with open('C:\path\doc.txt', 'r') as f:
    lines = f.readlines()
    for i, line in enumerate(lines):
        if (text) in line: 
            if i % onx:
                 y = lines[i + 4]
                 print (y)

如果我这样做,工作得更快,但如何使用枚举:

d = {}

f = open("C:\path\doc.txt","r")
for line in f:
    line = line.rstrip()
    l = len(line)+1
    for i in range(1,l):
        d[line[:i]] = True
f.close()


while True:
    w = ('text')
    if not w:
        break

    if w in d:
        print (w)

同样在这里我不能直接使用枚举,只能得到(line)作为第二个变量,但它肯定会让它变得更糟:

with open('C:\path\doc.txt', 'r') as inF:
    for line in inF:
        if (text) in line:
          print (line)

1 个答案:

答案 0 :(得分:1)

以这种方式搜索将导致O(n * m)搜索复杂度,其中n和m是输出和文本文件的大小。使用枚举,可能会非常slow ...如果生成将字符串(文件行)映射到索引的字典,则可以将搜索的复杂性降低到O(n + m)。