Python 2:AttributeError:'list'对象没有属性'strip'

Mic*_*ael 11 python split list

我的列表有一个小问题.所以我有一个名单l:

l = ['Facebook;Google+;MySpace', 'Apple;Android']
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,我的列表中只有2个字符串.我要分开我的名单l";" 并将我的新5个字符串放入一个名为的新列表中l1.

我怎样才能做到这一点?

而且我也试过这样做:

l1 = l.strip().split(';')
Run Code Online (Sandbox Code Playgroud)

但Python给我一个错误:

AttributeError: 'list' object has no attribute 'strip'
Run Code Online (Sandbox Code Playgroud)

因此,如果'list'对象没有'strip'或'split'属性,我该如何拆分列表?

谢谢

Suk*_*lra 18

strip()是一个字符串的方法,你在它上面调用它list,因此错误.

>>> 'strip' in dir(str)
True
>>> 'strip' in dir(list)
False
Run Code Online (Sandbox Code Playgroud)

要做你想做的事,就这样做

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

因为,您希望元素位于单个列表中(而不是列表列表),您有两个选项.

  1. 创建一个空列表并向其追加元素.
  2. 展平列表.

要做第一个,请遵循以下代码:

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

要做第二个,请使用 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']
Run Code Online (Sandbox Code Playgroud)