2011-01-24 6 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()を使用すると、空白文字で分割し、連続した空白を食べる:

list comprehensionとAを使用して
>>> 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

また、私たちがいている間に、 'line =" tuple(line.split()) "行内の' '1947 '':P – Thomas

+0

@Thomas、 '' map(str .split、open( "file")) ':P –

+0

まあええ。 :Pちょうど質問に近づき、 "with"を使用しようとしました。 – gorlum0

0

ワンライナーデータを読み込む際のショートカットをカップルしてください:

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

ここでは '.readlines()'を使うべきではありません。ファイルオブジェクトを繰り返し処理するだけで、すべてが一度にメモリに読み込まれるわけではありません。 –

+0

@gnibbler:ありがとう。私はそれを削除した。 – GreenMatt

関連する問題