1. ホーム
  2. python

[解決済み】Python 2: AttributeError: 'list' オブジェクトに 'strip' 属性がない。

2022-01-30 17:13:31

質問

リストに関する小さな問題があります。というリストがあります。 l :

l = ['Facebook;Google+;MySpace', 'Apple;Android']

そして、ご覧の通り、私のリストには2つの文字列しかありません。私はリストを分離したい l によって ';' という新しいリストに新しい5つの文字列を入れました。 l1 .

どうすればいいのでしょうか?

あと、こうやってやってみました。

l1 = l.strip().split(';')

しかし、Pythonは私にエラーを与える。

AttributeError: 'list' object has no attribute 'strip'

では、もし 'list' オブジェクトに 'strip' や 'split' 属性がない場合、どのようにリストを分割すればいいのでしょうか?

ありがとうございます。

解決方法は?

strip() は文字列のためのメソッドで、これを list そのため、エラーが発生します。

>>> 'strip' in dir(str)
True
>>> 'strip' in dir(list)
False

やりたいことをやるには、次のようにすればいい。

>>> l = ['Facebook;Google+;MySpace', 'Apple;Android']
>>> l1 = [elem.strip().split(';') for elem in l]
>>> print l1
[['Facebook', 'Google+', 'MySpace'], ['Apple', 'Android']]

要素を1つのリストにしたい(リストのリストではない)ので、2つのオプションがあります。

  1. 空のリストを作成し、そこに要素を追加する。
  2. リストを平坦にする。

を行うには、コードに従ってください。

>>> l1 = []
>>> for elem in l:
        l1.extend(elem.strip().split(';'))  
>>> l1
['Facebook', 'Google+', 'MySpace', 'Apple', 'Android']

2番目の方法は itertools.chain

>>> l1 = [elem.strip().split(';') for elem in l]
>>> print l1
[['Facebook', 'Google+', 'MySpace'], ['Apple', 'Android']]
>>> from itertools import chain
>>> list(chain(*l1))
['Facebook', 'Google+', 'MySpace', 'Apple', 'Android']