Python 2:attributeRor:“list”对象没有“strip”属性

2024-09-30 12:11:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我对单子有点小问题。所以我有一个名为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”属性,如何拆分列表?

谢谢


Tags: 字符串l1apple列表facebookobject错误google
3条回答

^{}是字符串的方法,您是在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']]

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

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

要执行第一个操作,请遵循以下代码:

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

要执行第二个操作,请使用^{}

>>> 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 这将把我连接成一个字符串,然后你就可以-

l1 = strtemp.split(";")

这是因为strtemp是一个字符串,它有.split()

这应该是你想要的:

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

输出:

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

相关问题 更多 >

    热门问题