2011-01-24 47 views
2
...  
    1947q2  -0.6 
    1947q3  -0.3 
    1947q4   6.2 
    1948q1  16.5 
... 

如何將此文本文件放入列表中?我在年份與相應值之間的間隔方面存在問題。如何分割此字符串?

這是我到目前爲止有:

data = [] 

for line in open("file"): 
    if '1947' in line: 
     sl = line.split('  ') 
     data.append((sl[0], sl[1])) 

print data 

回答

8

只需使用split()不帶參數的分裂的空白,並吃掉連續的空白:

>>> s=' 1947q2  -0.6' 
>>> s.split() 
['1947q2', '-0.6'] 
+0

哇,這很酷。 +1是pythonic。 – Blender 2011-01-24 20:29:52

2
data = [] 

with open("file") as fin: 
    for line in fin: 
     data.append(tuple(line.split())) 

print data 
+0

或者當我們在它的時候:`data = [tuple(line.split())for line in open(「file」)if'1947'in line]`:P – Thomas 2011-01-24 20:32:02

+0

@Thomas,甚至map(str .split,open(「file」))`:P – 2011-01-24 20:59:20

0

一個襯墊使用list comprehension和夫婦在讀數據時的捷徑:

data = [line.split() for line in open('path/to/file', 'rt')]