-1

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

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

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

(不管是“Amazon FR”还是“Amazon UK”……)

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'object 没有属性'remove',我如何使用索引从字符串中删除一些单词或字符?

谢谢

4

4 回答 4

2

使用列表理解:

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

这将为来自 的每个条目留下从 11 到 19 的符号l1

于 2013-07-19T17:43:22.967 回答
1

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

>>> [i.split(':')[1].split('-')[0].strip() for i in l1]
['Huawei1', 'Huawei1', 'Huawei1']
于 2013-07-19T17:44:58.073 回答
1

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

>>> 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']
于 2013-07-19T17:46:39.130 回答
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)
于 2013-07-19T17:47:50.753 回答