2010-07-08 41 views

回答

3

最簡單的方法是:

>>> n = [] 
>>> for line in open(fname): 
    els = line.split('\t') 
    n.append(els[:2]) 
    n.append(els[2:]) 


>>> n 
[['A', '3'], ['A', '6'], ['B', '6'], ['B', '9'], ['C', '0'], ['C', '2']] 

也許會更有效是:

>>> g = (line.split('\t') for line in open(fname)) 
>>> [els[i:i+2] for els in g for i in range(0, 4, 2)] 
[['A', '3'], ['A', '6'], ['B', '6'], ['B', '9'], ['C', '0'], ['C', '2']] 
+0

謝謝SilentGhost! – 2010-07-08 14:34:13

+0

eeeewww :)。應該有更好的方法來做到這一點。至少說'(0,2)'而不是'範圍(0,4,2)'。另外,如果你只是使用'split()'(無參數),它將在空格,製表符,新行上進行分割......你可以執行'g = open(fname).read()。split()' – 2010-07-09 01:30:28

0

這個問題實際上是允許一些Python的解決方案。

l = open(fname).read().split() 
LIST = zip(l[::2], l[1::2]) 

就是這樣。 「Bam!

,或者我們可以「knock it up a notch」:

def couple(i): 
    while True: 
     yield (i.next(), i.next()) 

LIST = [w for w in couple(iter(open(fname).read().split()))] 

那些額外的好處是,他們將兩人一組讀文件,不管有4列(如上例)或6 ,2 ...無論


又見 pythonic-way-to-split-comma-separated-numbers-into-pairshow-do-you-split-a-list-into-evenly-sized-chunks-in-python