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