我的列表有一个小问题。所以我有一个名为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'属性,我该如何拆分列表?
由于
答案 0 :(得分:17)
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']]
因为,您希望元素位于单个列表中(而不是列表列表),您有两个选择。
要做第一个,请遵循以下代码:
>>> l1 = []
>>> for elem in l:
l1.extend(elem.strip().split(';'))
>>> l1
['Facebook', 'Google+', 'MySpace', 'Apple', 'Android']
要做第二步,请使用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']
答案 1 :(得分:2)
这应该是你想要的:
[x for y in l for x in y.split(";")]
输出:
['Facebook', 'Google+', 'MySpace', 'Apple', 'Android']
答案 2 :(得分:2)
你想做的是 -
strtemp = ";".join(l)
第一行在;
的末尾添加了MySpace
,以便在拆分时不会发出MySpaceApple
这将l加入一个字符串,然后你可以 -
l1 = strtemp.split(";")
这是有效的,因为strtemp是一个包含.split()
的字符串答案 3 :(得分:2)
希望这会有所帮助:)
>>> 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']
>>>
答案 4 :(得分:1)
我现在尝试过的一个可能的解决方案是: (确保以一般方式使用for,而使用索引)
select l.*, l2.count, l2.minId from tmpLane l
JOIN (SELECT id, min(ID) as minId from tmpLane
GROUP BY origRegion, origState, destRegion, destState) l2 on l.id = l2.id;
答案 5 :(得分:0)
您拆分列表的字符串条目。升[0] .strip()
答案 6 :(得分:0)
拆分字符串,然后使用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']
答案 7 :(得分:0)
您可以先用分隔符';'将列表中的字符串连接起来。使用功能join
,然后使用split
功能创建列表:
l = ['Facebook;Google+;MySpace', 'Apple;Android']
l1 = ";".join(l)).split(";")
print l1
输出
['Facebook','Google +','MySpace','Apple','Android']