2011-01-24 2 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 для того, чтобы быть питоническим. – Blender

2
data = [] 

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

print data 
+0

Или, когда мы на нем: 'data = [tuple (line.split()) для строки в открытом (« файл »), если« 1947 »в строке]': P – Thomas

+0

@Thomas, или даже 'map (str .split, open ("file")) ': P –

+0

Ну да. : P Просто попытался быть ближе к вопросу и использовать «с». – gorlum0

0

Один лайнер с помощью list comprehension и пару ярлыков при считывании данных:

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

Вы не должны использовать '.readlines()' здесь. Вы можете просто перебирать файл, и это означает, что он не все сразу считывается в память. –

+0

@gnibbler: Спасибо. Я удалил его. – GreenMatt

Смежные вопросы