如何从列表中的字符串中删除前x个字符

7

我有一个列表,其中包含几个字符串。我只想从每个字符串中删除前7个字符。我应该怎么做?

我尝试过:

lst = ["1234567something", "1234567smthelse"]

for i in lst:

    i [7:]

print lst

但我从一开始就得到了相同的列表...
7个回答

12

当执行i [7:]时,实际上并没有编辑列表中的元素,只是计算一个新字符串,不包括前7个字符,并且不会对原列表进行任何操作。

你可以尝试这样做:

>>> lst = [e[7:] for e in lst]
>>> lst
['something', 'smthelse']

这将循环遍历您的数组元素,并按预期从开头删除字符。


对不起,我太蠢了,我没有将编辑后的数据保存到列表本身中...感谢您帮助一个初学者 :) - mdenci

3

您可以执行以下操作:

lst = ["1234567something", "1234567smthelse"]
newlst=[]
    for i in lst:
        newlst.append(i[7:])

print newlst

我希望您能从中受益。

3

i[7:]不是原地操作,它返回一个新的字符串,你没有对其进行任何操作。

你可以用所需字符串创建一个新列表:

lst = [string[7:] for string in lst]

或者您可以修改同一列表:

for idx, string in enumerate(ls):
    ls[idx] = string[7:]

3
你在问题中从未重新分配lst,这就是为什么print(lst)中的lst输出不会改变。尝试像这样重新分配:
lst = ["1234567something", "1234567smthelse"]
lst = [i[7:] for i in lst]
print(lst)

返回值

['某物', '另一物']


2

试试这个:

for i in range(0, len(lst)):
   lst[i] = lst[i][7:]

2

您没有将i[7:]的值保存在任何地方...只需创建一个新列表,其中包含修剪过的值:

lst = [i[7:] for i in lst]

2

试试这个:

lst = [s[7:] for s in lst]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接