私は次の形式で単語の大きなリストを取得する必要があります。
['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())
>>> 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']
リスト理解? [x.strip() for x in lst]
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)
これは、 PEP 202 で定義されているリスト内包表記を使用して実行できます。
[w.strip() for w in ['this\n', 'is\n', 'a\n', 'list\n', 'of\n', 'words\n']]
他のすべての答え、および主にリストの理解に関するものは素晴らしいです。しかし、あなたのエラーを説明するだけです:
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
しかし、これはそれほど便利ではありません。.append
appendsをリストに追加します。あなたの場合、ストリップされた文字列を追加するときにアイテムごとにアイテムを作成するため、デフォルト値でリストを作成することは役に立ちません。
したがって、コードは次のようになります。
strip_list = []
for a in lines:
strip_list.append(a.strip())
しかし、確かに、これはまったく同じものであるため、最高のものはこれです。
stripped = [line.strip() for line in lines]
単に.strip
よりも複雑なものがある場合は、これを関数に入れて同じことをしてください。これがリストを操作する最も読みやすい方法です。
末尾空白だけを削除する必要がある場合は、 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']