Python 2:attributeRor:“str”对象没有“remove”属性

2024-09-28 21:52:33 发布

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

我对单子有点小问题。我有一个名为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',如何使用索引从字符串中删除一些单词或字符?

谢谢


Tags: 字符串inl1amazon列表foralertfr
3条回答

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

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

在本例中,我们返回一个新字符串,该字符串从原始字符串的开头以第11个字符开始,从字符串的结尾以15个字符结束,有效地修剪了'Amazon FR: '' - PRICE ALERT!'

在你更全面的背景下,比如:

>>> l1 = ['Amazon FR: Huawei1 - PRICE ALERT!', 'Amazon FR: Huawei1 - PRICE ALERT!', 'Amazon UK: Huawei1 - PRICE ALERT!']
>>> l2 = [s[11:-15] for s in l1]
>>> l2
['Huawei1', 'Huawei1', 'Huawei1']

@mishik的答案是有效的,如果你知道部分的长度。这里是另一种方法,它搜索:-,然后适当地剪切字符串。我将为:-之前的任何长度的字符串工作。

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

使用列表理解:

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

这将为l1中的每个条目留下11到19个符号。

相关问题 更多 >