Python 2:AttributeError:';列表';对象没有属性';条状';

Python 2:AttributeError:';列表';对象没有属性';条状';,python,list,split,Python,List,Split,我对列表有一个小问题。因此,我有一个名为l的列表: l = ['Facebook;Google+;MySpace', 'Apple;Android'] 正如你所看到的,我的列表中只有两个字符串。我想用分隔我的列表l;'并将新的5个字符串放入名为l1的新列表中 我该怎么做 我也试着这样做: l1 = l.strip().split(';') 但是Python给了我一个错误: AttributeError: 'list' object has no attribute 'strip' 所以,如

我对列表有一个小问题。因此,我有一个名为
l
的列表:

l = ['Facebook;Google+;MySpace', 'Apple;Android']
正如你所看到的,我的列表中只有两个字符串。我想用分隔我的列表
l
;'
并将新的5个字符串放入名为
l1
的新列表中

我该怎么做

我也试着这样做:

l1 = l.strip().split(';')
但是Python给了我一个错误:

AttributeError: 'list' object has no attribute 'strip'
所以,如果“list”对象没有属性“strip”或“split”,那么如何拆分列表

谢谢

是字符串的一种方法,您在
列表中调用它
,因此出现了错误

>>> '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']]
由于您希望元素位于单个列表(而不是列表列表)中,因此有两个选项

  • 创建一个空列表并向其添加元素
  • 将列表展平
  • 要执行第一步,请遵循以下代码:

    >>> l1 = []
    >>> for elem in l:
            l1.extend(elem.strip().split(';'))  
    >>> l1
    ['Facebook', 'Google+', 'MySpace', 'Apple', 'Android']
    
    要执行第二步,请使用


    您可以拆分列表中的字符串条目。l[0].strip()

    拆分字符串,然后使用将它们合并到单个列表中

    >>> 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']
    

    这应该是您想要的:

    [x for y in l for x in y.split(";")]
    
    输出:

    ['Facebook', 'Google+', 'MySpace', 'Apple', 'Android']
    

    你想做的是-

    strtemp = ";".join(l)
    
    第一行添加一个
    MySpace
    的末尾,这样在拆分时,它不会发出
    MySpaceApple
    这将把l连接成一个字符串,然后你可以-

    l1 = strtemp.split(";")
    
    这是因为strtemp是一个包含.split()的字符串(希望有帮助:)


    我现在尝试的一个可能的解决方案是: (确保在使用索引时使用for的常规方式执行此操作)


    可以先用分隔符“;”连接列表中的字符串使用函数
    join
    然后使用
    split
    创建列表:

    l = ['Facebook;Google+;MySpace', 'Apple;Android']
    
    l1 = ";".join(l)).split(";")  
    
    print l1
    
    输出

    [‘Facebook’、‘Google+’、‘MySpace’、‘Apple’、‘Android’]


    是的,但我需要列表l1如下所示:l1=['Facebook'、'Google+'、'MySpace'、'Apple'、'Android']您需要如何输出?我想,一个列表就足够了。@MishaVayvala:我编辑了答案。这应该是您现在想要的。您的代码有问题。我运行了它,只拿回了我应该拥有的5件物品中的4件苹果因为某种原因丢失了。等等,让我检查一下。我会回来的。哦,那是因为没有在MySpace之后。让我更正代码。如果你使用
    “;”,不是更好吗。join(l)
    ?顺便说一句,
    l
    l1
    几乎是你可以使用的最糟糕的变量名;请不要在真实代码中使用它们。:)列表已拆分为列表元素…感谢您提供了出色的拆分方式!x=[i.split(;”)for i in l]已经拆分了列表,但是z=[j for i in x for j in i]有什么用呢?x和z的区别是什么?
    >>> 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']
    >>> 
    
    >>> 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 = ['Facebook;Google+;MySpace', 'Apple;Android']
    
    l1 = ";".join(l)).split(";")  
    
    print l1