リストに小さな問題があります。だから私はl
と呼ばれるリストを持っています:
l = ['Facebook;Google+;MySpace', 'Apple;Android']
ご覧のとおり、リストには2つの文字列しかありません。リストl
を';'で区切り、新しい5つの文字列をl1
という名前の新しいリストに入れます。
どうやってやるの?
また、私はこれを次のようにしようとしました:
l1 = l.strip().split(';')
しかし、Pythonエラーを出してください:
AttributeError: 'list' object has no attribute 'strip'
「リスト」オブジェクトに属性「ストリップ」または「分割」がない場合、リストを分割するにはどうすればよいですか?
ありがとう
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']]
要素を単一のリスト(リストのリストではなく)にしたいので、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']
あなたがしたいことは-
strtemp = ";".join(l)
最初の行は、MySpace
の最後に;
を追加するため、分割中にMySpaceApple
が出力されません。これにより、lが1つの文字列に結合されます。
l1 = strtemp.split(";")
これは、strtempが.split()を持つ文字列であるため機能します
これはあなたが望むものでなければなりません:
[x for y in l for x in y.split(";")]
出力:
['Facebook', 'Google+', 'MySpace', 'Apple', 'Android']
お役に立てれば :)
>>> x = [i.split(";") for i in l]
>>> x
[['Facebook', 'Google+', 'MySpace'], ['Apple', 'Android']]
>>> z = [j for i in x for j in i]
>>> z
['Facebook', 'Google+', 'MySpace', 'Apple', 'Android']
>>>
私が今試した1つの可能な解決策は次のとおりです:
>>> l=['Facebook;Google+;MySpace', 'Apple;Android']
>>> new1 = l[0].split(';')
>>> new1
['Facebook', 'Google+', 'MySpace']
>>> new2= l[1].split(';')`enter code here`
>>> new2
['Apple', 'Android']
>>> totalnew = new1 + new2
>>> totalnew
['Facebook', 'Google+', 'MySpace', 'Apple', 'Android']
リストの文字列エントリを分割します。 l [0] .strip()
文字列を分割してから chain.from_iterable を使用して、それらを単一のリストに結合します
>>> import itertools
>>> l = ['Facebook;Google+;MySpace', 'Apple;Android']
>>> l1 = [ x for x in itertools.chain.from_iterable( x.split(';') for x in l ) ]
>>> l1
['Facebook', 'Google+', 'MySpace', 'Apple', 'Android']