有效地解析纯文本

时间:2013-03-20 17:10:33

标签: python parsing memory plaintext

请告诉我如何有效地解析名称并将其存储到内存中,如下所示:

SMITH          1.006  1.006      1
JOHNSON        0.810  1.816      2
WILLIAMS       0.699  2.515      3
JONES          0.621  3.136      4
BROWN          0.621  3.757      5
DAVIS          0.480  4.237      6
MILLER         0.424  4.660      7
...

此文本文件包含超过80K行。我只需要随机选择的名字; 您可以在此处找到的文件来源dist.all.last

1 个答案:

答案 0 :(得分:2)

这些行是以空格分隔的,只是循环遍历文件,然后使用.split()

with open('dist.all.last') as inputfile:
    names = [line.split()[0] for line in inputfile if line.strip()]

如果您需要随机选择一个名称,可以使用:

import random
with open('dist.all.last') as inputfile:
    name = None
    for i, line in enumerate(inputfile):
        r = random.randint(0, i)
        if not r and line.strip():
            name = line.split()[0]

进行选择而不会在内存中一次保留多行。