2016-05-04 1 views
0

プロジェクトでは、私はたくさんの行を読んで数値の各行を数字のリストに入れようとしています。私が代わりに私がしようとすると、これを取得し、リストに読み出したラインを入れリスト内の引用符と空白を読み込みファイルから取り除く

[1749, 58.0, 62.6, 70.0, 55.7, 85.0, 83.5, 94.8, 66.3, 75.9, 75.5, 158.6, 85.2] 

['1749', '', '', '', '58.0', '', '62.6', '', '70.0', '', '55.7', '', '85.0', '', '83.5', '', '94.8', '', '66.3', '', '75.9', '', '75.5', '158.6', '', '85.2'] 

私が知りたいすべてが私が午前問題は、その代わりに、所望の結果でありますどのようにそれらの周りに数字のない普通の数字を作るのか、そしてその数字の間にある ""エントリーをどうやって消すかということです。現在の成果を得るために使用しているコードは次のとおりです。

sun_file = open('sunspot_data.txt', 'r') 

line = sun_file.readlines() 

x = line[3].rstrip('\n').split(' ') 

list2 = list(x) 

print list2 

進め方についてのアイデアはありますか?

答えて

0

デフォルトモードは「R」であるので、あなたは、ファイルを開くための 使用

  • 明示 withブロックになりたい場合を除き、あなたがそれを必要としない。この

    with open('sunspot_data.txt') as sun_file: 
        for _ in range(3): # skip first three lines 
         sun_file.readline() 
    
        for line in sun_file: 
         numbers = line.rstrip().split() 
         new_list = map(float, numbers) 
    
         print new_list 
    
    • をお試しください彼らはあなたがそれを使用し終わった後に自動的に ファイルを閉じます。
    • rstrip デフォルトは改行(およびその他の空白文字)を分割し、split は自動的にスペースで分割します。
    • split()はすでにリストを返し、これだけ行ずつ読み込むためlist(x)
    • あなただけの4番目の行をしたいし、あなたのファイルが大きい場合、それは良いかもしれでそれのコピーを作成する時間を無駄にする必要はありませんファイル全体を読むのではなく4行目になるまで
    +0

    ファイルに行がたくさんある場合は、すべて読み込んで1行だけ使用するため、非常に無駄です。 –

    +0

    それは働いた!前にmap()メソッドを実行しようとしましたが、リストがストライプ化され、別の名前でslpitされていました。何の理由もありませんでしたか? – bh2424

    +0

    @JohnZwinckよ!私はちょうど編集をしました。 – pushkin

    関連する問題