1

ファイルからカンマ区切りの値の 2 次元配列をリストに読み込もうとしています。次の問題があります。末尾の改行を取り除くにはどうすればよいですか? これが私の言いたいことです。これは私が読んだ1行です。

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

現在、コードには次のものがあります。

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(',')))
4

3 に答える 3

1

既存のコードに必要な唯一の変更は、そのrstrip()前の行で関数を使用するsplit()ことです。例えば、

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']

または、1 つのステップで:

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

 In [12]: s
 Out[12]: ['this', 'is', 'a', 'test']
于 2012-04-21T12:07:51.277 に答える
1

Withwithステートメント、リスト内包表記、およびcsvモジュール

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

編集:

  1. withファイルを開く/処理中に例外が発生すると、ステートメントはファイルを自動的に閉じます。あなたの場合は必要ないかもしれませんが、この可能性を覚えておく必要があります。コンテキスト マネージャーを使用することをお勧めします [詳細]

  2. リスト内包表記は、通常、スクリプトを高速化しますが、読みにくくすることがあります。とにかく理解して使ってください。

  3. モジュールに賛成しcsvたり、組み込み関数を使用してファイルを開き、split(','). それはあなたの選択です、私は代替案を提案します。

于 2012-04-21T12:16:23.247 に答える
0
t = []
for line in open("txt", "r").readlines():
    t.append(line.rstrip().split(','))
于 2012-04-21T12:09:32.910 に答える