2017-02-17 1 views
1

ファイルから読み込み、各文字を2次元配列に格納しています。私は各行の最後にある '\ n'を取り除こうとしています。私のコードは、これまでのところです:私が代わりにl[0].rstrip('\n')で試してみましたリストには属性ストリップがありません

l = [] 
for i in range(5): 
    l.append([]) 
f = open('file.txt','r') 
count = 0 
for line in f: 
    for char in line: 
     l[count].append(char) 
    count += 1 

f.close() 

l[0].rstrip('\n') 

l = map(lambda s: s.strip('\n'), l)l = [i.rstrip() for i in l ]

これらの各 は、リストには何の属性ストリップ(またはrstrip)を持っていないというエラーを返します。とにかくこれを修正するには?

+1

'\ n 'なら' l [count] 'に' char'を付け加えてみませんか?リストには 'strip()'はありません。各 'l [count]'に文字列を作成しようとしていますか、それとも本当に単一文字のリストですか? – Scovetta

+0

'strip'は文字列用ですので、他の作業を行う前に文字列に適用してください。' 'char for line.strip():' – tdelaney

+0

'l [count] .appendの前にif文を追加しました。 char) ''をチェックして、charが '\ n'で 'l [0] .rstrip( '\ n')'が取り除かれているかどうかを調べるようになりました。 –

答えて

1

lリストのリストです。あなたがl[0].rstrip()と呼ぶならば、サブリストにrstrip()を書くことができます。しかし、たとえstrip()が機能していたとしても、文字列が不変であるため、差異は見られないでしょう。従って、新しい文字列を返します。古い文字列を更新しません。

ただし簡単に使用することができます。

l[0] = [x.rstrip('\n') for x in l[0]] 

のみl[0]を更新します。

あなたはすべてのサブリストを更新したい場合は、以下のリストの内包表記を使用することができます。

l = [[x.rstrip('\n') for x in s] for s in l] 

は、さらにメモリにファイルを読み込むためのコードは非常に奇妙です:ファイルは以下を持っている場合にのみ動作します6行以上。

with open('file.txt','r') as f: 
    l = [list(line.rstrip('\n')) for line in f] 

これは、問題のコードフラグメント全体を置き換えます。

関連する問題