我可以使用for循环从字符串中删除多个索引吗?

时间:2019-11-14 14:12:19

标签: python python-3.x string

我是Python的新手,目前我只是有点混乱...但是我仍然遇到这个问题。我正在尝试使用for循环从字符串中删除某些索引。我的想法是这样的:

Text="Gvusaibdsz8audvbsauzdgsavuczisagbcsuzaicbhas"
for i in range(0,7):
    Text=Text.replace(Text[i], "")
print(Text)

但是它仅删除一个索引,并且正在恢复已经替换的索引,例如:

1.loop: vusaibdsz8audvbsauzdgsavuczisagbcsuzaicbhas
2.loop: Gusaibdsz8audvbsauzdgsavuczisagbcsuzaicbhas

4 个答案:

答案 0 :(得分:1)

当然,有很多方法可以得到理想的结果。下面,根据您的逻辑(使用for loop)有一个不错的选择。用空字符替换字符时,最好直接删除所需的字符。

在代码中,我将text转换为list以便于处理。之后,我根据索引删除了所有字符。最后,加入操作会产生所需的text

text = "Gvusaibdsz8audvbsauzdgsavuczisagbcsuzaicbhas"
text_list = list(text)
for index in range(0, 7):
    text_list.remove(text[index])

text = ''.join(text_list)
print(text)   # dsz8audvbsauzdgsavuczisagbcsuzaicbhas

答案 1 :(得分:1)

如果我了解您要执行的操作,则您正在尝试省略索引{0,1,2,3,4,5和6中的字符串Text的字母,但是您的代码却没有” t目前正在执行此操作,但实际上它将采用第一个字母G,并将其从所有字符串中删除(出现一次),下一个循环Text等于{{1 }},因为u等于vusaibdsz8audvbsauzdgsavuczisagbcsuzaicb在第一次迭代中省略了Text之后,因为G出现了五次,所以文本将等于u,依此类推。

您可以将vsaibdsz8advbsazdgsavczisagbcszaicbhas放入for循环中并查看结果:

print(Text)

在Python中,您可以通过使用slicing来实现无循环和最佳方式,如下所示:

>>> Text="Gvusaibdsz8audvbsauzdgsavuczisagbcsuzaicbhas"
>>> for i in range(0,7):
...     Text=Text.replace(Text[i], "")
...     print(Text)
... 
vusaibdsz8audvbsauzdgsavuczisagbcsuzaicbhas
vsaibdsz8advbsazdgsavczisagbcszaicbhas
vsibdsz8dvbszdgsvczisgbcszicbhs
vsidsz8dvszdgsvczisgcszichs
vidz8dvzdgvczigczich
viz8vzgvczigczich
viz8vzvcziczich

这将为您提供等于Text = Text[7:] 的文本。

如果您的目标是通过循环(假设您在每次迭代中都需要Text)来达到此目的,则可以尝试以下操作:

dsz8audvbsauzdgsavuczisagbcsuzaicbhas

我希望这会有所帮助!

答案 2 :(得分:0)

看看字符串slicing

text = "Gvusaibdsz8audvbsauzdgsavuczisagbcsuzaicbhas"
newtext = text[1:]
print(newtext)

->“ Gvusaibdsz8audvbsauzdgsavuczisagbcsuzaicbhas”
->“ vusaibdsz8audvbsauzdgsavuczisagbcsuzaicbhas”

答案 3 :(得分:0)

您可以替换

Text=Text.replace(Text[i], "")

使用

Text = Text[:i] + Text[i+1:]

使用切片来重建没有特定索引的字符串。

旁注:变量名称应小写。