2012-04-21 48 views
1

ファイルからカンマ区切りの2次元配列をリストに読み込もうとしています。私は次の問題を抱えています。後続の改行を取り除くにはどうしたらいいですか?これが私の言うことです。これは私が読んだ行です。現在2次元配列をファイルからPythonリストに読み込む

['0', '0', '0', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '1', '1\n'] 

、Iコードに次のように持っている:ヒントについて

ins = open("parseTable.txt", "r") 
parseTable = [] 
for line in ins: 
    row = line.split(',') 
    parseTable.append(row) 

おかげで皆を。私は次のことをすることをしました。 すべてのヒントをありがとう。私は次のことをすることをしました。

ins = open("parseTable.txt", "r") 
parseTable = [] 
for line in ins: 
    row = line.split(',') 
    parseTable.append(map(int,line.split(','))) 
+0

おそらく 'ast.literal_eval'が助けてくれるでしょう –

+1

@frodoあなたが役に立つコードとヒントを見つけたらうれしいです。役に立つと判明した回答をupvoteし、チェックマークで答えの1つを選択することができます。 – Levon

答えて

1

既存のコードに必要な唯一の変更は、あなたsplit()それ以前に自分のライン上のrstrip()機能を使用することです。例えば、

ins = open("parseTable.txt", "r") # the "r" is not really needed - default 
parseTable = [] 

for line in ins: 
    row = line.rstrip().split(',') # <- note use of rstrip() 
    parseTable.append(row) 

これにより、必要に応じて改行が削除されます。


簡単な例、ステップバイステップ:

In [2]: s = 'this is a test\n' 

In [3]: s 
Out[3]: 'this is a test\n' 

In [4]: s.rstrip() 
Out[4]: 'this is a test' 

ので、変更が付くようにするために、あなたはワンステップで別の割り当て

In [5]: s = s.rstrip() 

In [6]: s = s.split() 

In [7]: s 
Out[7]: ['this', 'is', 'a', 'test'] 

を作成する必要があります

In [11]: s = s.rstrip().split() 

In [12]: s 
Out[12]: ['this', 'is', 'a', 'test'] 
+0

ウル手が速い... – fanlix

0
t = [] 
for line in open("txt", "r").readlines(): 
    t.append(line.rstrip().split(',')) 
文で、リスト内包、と

import csv 
with open("parseTable.txt") as f: 
    parseTable = [x.rstrip() for x in row for row in csv.reader(f)] 

編集csvモジュールで

1

  1. with文では、例外がオープニング/処理ファイルながら上昇したときに自動的にファイルを閉じます。あなたの場合は必要ではないかもしれませんが、この可能性を覚えておく必要があります。コンテキストマネージャを使うことは良い練習です[More]

  2. リストの理解は、通常、スクリプトをより速くしますが、読みやすさのために難しくなることがあります。とにかくそれを理解して使用する必要があります。

  3. 私は、csvモジュールまたは組込み関数を持つファイルを開き、split(',')で行を分割することについて何も意味しません。それはあなたの選択です、私は代替案を提案します。

+0

これは私のためにイン=オープン( "parseTable.txt"、 "R")を働いたインのラインのための parseTable = [] : 行= line.split( '') parseTable.append(map(int、line.split( '、'))) – frodo

+0

私はいくつかの説明を追加しました – San4ez

関連する問題