2013-03-20 48 views
-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

回答

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] 

它做出选择时不会在内存中保留多条线。

+0

谢谢!我是Python的新手;) – Edward83 2013-03-20 17:14:08

+0

本来我认为这将有与他们的空间姓氏的问题,但似乎没有任何:他们写'VANROSSUM',例如.. – DSM 2013-03-20 17:20:40

+1

@ DSM:我检查第一。 :-) – 2013-03-20 17:22:57