我对列表有一个小问题。我有一个名为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'
,我如何使用索引从字符串中删除一些单词或字符?
感谢
使用列表理解:
l2 = [x[11:20] for x in l1]
这将为来自l1
的每个条目留下从11到19的符号。
@mishik的答案在知道零件长度的情况下有效。这里是另一种方法,它搜索:
和-
,然后适当地剪切字符串。我将为:
和-
之前的任何长度的字符串工作。
>>> [i.split(':')[1].split('-')[0].strip() for i in l1]
['Huawei1', 'Huawei1', 'Huawei1']
在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']
试试这个:
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)