web-dev-qa-db-ja.com

文字列リストの要素から末尾の改行を削除します

私は次の形式で単語​​の大きなリストを取得する必要があります。

['this\n', 'is\n', 'a\n', 'list\n', 'of\n', 'words\n']

そして、strip関数を使用して、次のように変換します。

['this', 'is', 'a', 'list', 'of', 'words']

私が書いたものはうまくいくと思ったが、次のようなエラーが出続ける:

「「リスト」オブジェクトには属性「ストリップ」がありません」

私が試したコードは次のとおりです。

strip_list = []
for lengths in range(1,20):
    strip_list.append(0) #longest Word in the text file is 20 characters long
for a in lines:
    strip_list.append(lines[a].strip())
106
George Burrows
>>> my_list = ['this\n', 'is\n', 'a\n', 'list\n', 'of\n', 'words\n']
>>> map(str.strip, my_list)
['this', 'is', 'a', 'list', 'of', 'words']
179
Sven Marnach

リスト理解? [x.strip() for x in lst]

99
yosukesabai

lists comprehensions :を使用できます。

strip_list = [item.strip() for item in lines]

または map 関数:

# with a lambda
strip_list = map(lambda it: it.strip(), lines)

# without a lambda
strip_list = map(str.strip, lines)
51
Schnouki

これは、 PEP 202 で定義されているリスト内包表記を使用して実行できます。

[w.strip() for w in  ['this\n', 'is\n', 'a\n', 'list\n', 'of\n', 'words\n']]
7
Casey

他のすべての答え、および主にリストの理解に関するものは素晴らしいです。しかし、あなたのエラーを説明するだけです:

strip_list = []
for lengths in range(1,20):
    strip_list.append(0) #longest Word in the text file is 20 characters long
for a in lines:
    strip_list.append(lines[a].strip())

aはリストのメンバーであり、インデックスではありません。あなたが書くことができるのはこれです:

[...]
for a in lines:
    strip_list.append(a.strip())

別の重要なコメント:この方法で空のリストを作成できます:

strip_list = [0] * 20

しかし、これはそれほど便利ではありません。.appendappendsをリストに追加します。あなたの場合、ストリップされた文字列を追加するときにアイテムごとにアイテムを作成するため、デフォルト値でリストを作成することは役に立ちません。

したがって、コードは次のようになります。

strip_list = []
for a in lines:
    strip_list.append(a.strip())

しかし、確かに、これはまったく同じものであるため、最高のものはこれです。

stripped = [line.strip() for line in lines]

単に.stripよりも複雑なものがある場合は、これを関数に入れて同じことをしてください。これがリストを操作する最も読みやすい方法です。

3
Joël

末尾空白だけを削除する必要がある場合は、 str.rstrip() を使用できます。これは str.strip()

>>> lst = ['this\n', 'is\n', 'a\n', 'list\n', 'of\n', 'words\n']
>>> [x.rstrip() for x in lst]
['this', 'is', 'a', 'list', 'of', 'words']
>>> list(map(str.rstrip, lst))
['this', 'is', 'a', 'list', 'of', 'words']
1
Eugene Yarmash