-1

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

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

4

1 回答 1

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]

它可以在内存中一次保留多行的情况下进行选择。

于 2013-03-20T17:13:34.213 回答