限制搜索大文件

时间:2010-08-04 19:00:33

标签: python

所以这是我的程序,有一些新的修改:

datafile = open('C:\\text2.txt', 'r')
completedataset = open('C:\\bigfile.txt', 'r')
smallerdataset = open('C:\\smallerdataset.txt', 'w')
matchedLines = []
for line in datafile:
    splitline = line.split()
    for item in splitline:
        if not item.endswith("NOVA"):
            if item.startswith("JJJ") or item.startswith("KOS"):
                matchedLines.append( item )
counter = 1
for line in completedataset:
    print counter
    counter +=1
    for t in matchedLines:
        if t in line:
            smallerdataset.write(line)
datafile.close()
completedataset.close()
smallerdataset.close()

我现在遇到的问题是我想以更快的速度搜索“bigfile”。我想将bigfile中每一行的搜索限制在第一个','

之前的字符串中

我想使用像index = aString.find(',')这样的东西我相信但是我没有太多运气将大文件的搜索限制在第一个逗号之前发生的字符串。

3 个答案:

答案 0 :(得分:0)

对于您的拆分问题,您可以限制拆分线的次数:

first_item = str.split(",",maxsplit=1)[0]

答案 1 :(得分:0)

你可以改变

if t in line:

if t in line[:line.find(',')]:

如果line非常长并且逗号出现在开头附近,这可能会使程序更快。或者,如果在,的末尾附近显示line,则可能会使程序变慢。

PS。每个line都保证有逗号吗?如果没有逗号,上面的代码有点时髦。例如,

In [21]: line='a line of text'

In [22]: line[:line.find(',')]
Out[22]: 'a line of tex'

如果你想忽略没有逗号的行,这可能会更好:

In [23]: line[:line.find(',')+1]
Out[23]: ''

答案 2 :(得分:0)

这可能有助于加快速度......对于缺少标签而言感到抱歉

datafile = open('C:\\text2.txt', 'r')
completedataset = open('C:\\bigfile.txt', 'r')
smallerdataset = open('C:\\smallerdataset.txt', 'w')
matchedLines = []
counter = 1
for line in datafile.readlines():
if line[-4:] == "NOVA":
if (line[:3] == "JJJ") or (line[:3] =="KOS"):
counter += 1
for compline in completedataset:
if line in compline:
smallerdataset.write(line)
datafile.close()
completedataset.close()
smallerdataset.close()