Python 2:AttributeError:'str'对象没有属性'remove'

时间:2013-07-19 17:41:17

标签: python string list

我的列表有一个小问题。我有一个名为l1的列表:

l1 = ['Amazon FR: Huawei1 - PRICE ALERT!', 'Amazon FR: Huawei1 - PRICE ALERT!', 'Amazon UK: Huawei1 - PRICE ALERT!']

我想从列表中的每个字符串中删除'Amazon FR: '' - PRICE ALERT!'

(如果是'亚马逊FR'或'亚马逊英国'则无关紧要......)

l1 = ['Amazon FR: Huawei1 - PRICE ALERT!', 'Amazon FR: Huawei1 - PRICE ALERT!', 'Amazon UK: Huawei1 - PRICE ALERT!']
l2 = []
for x in l1:
    x.remove[:10]
    x.remove[14:]
    l2.append(x)

但Python给我一个错误:

AttributeError: 'str' object has no attribute 'remove'

好的,如果'str'对象没有属性'remove',如何使用索引从字符串中删除一些单词或字符?

由于

4 个答案:

答案 0 :(得分:2)

使用列表理解:

l2 = [x[11:20] for x in l1]

对于来自l1的每个条目,这将为11到19留下符号。

答案 1 :(得分:1)

如果您知道零件的长度,@ mishik的答案就有效。这是另一种搜索:-然后适当剪切字符串的方法。我会在:-之前使用任意长度的字符串。

>>> [i.split(':')[1].split('-')[0].strip() for i in l1]
['Huawei1', 'Huawei1', 'Huawei1']

答案 2 :(得分:1)

您无法从Python中的字符串中删除字符,因为字符串是不可变的。您需要创建一个新字符串,在本例中使用切片运算符:

>>> s
'Amazon FR: Huawei1 - PRICE ALERT!'
>>> s[11:-15]
'Huawei1'

在这种情况下,我们将返回一个新字符串,该字符串以原始字符串开头的第11个字符开头,并从字符串末尾返回15个字符,有效地修剪'Amazon FR: '和{ {1}}

在更全面的背景下,例如:

' - PRICE ALERT!'

答案 3 :(得分:0)

试试这个:

l1 = ['Amazon FR: Huawei1 - PRICE ALERT!', 'Amazon FR: Huawei1 - PRICE ALERT!', 'Amazon UK: Huawei1 - PRICE ALERT!']
l2 = []
for x in l1:
    x = x[10:] #get everything after position 10
    x = x[:-14] #get everything until pos 14 
    l2.append(x)