我是Python的新手,目前我只是有点混乱...但是我仍然遇到这个问题。我正在尝试使用for循环从字符串中删除某些索引。我的想法是这样的:
Text="Gvusaibdsz8audvbsauzdgsavuczisagbcsuzaicbhas"
for i in range(0,7):
Text=Text.replace(Text[i], "")
print(Text)
但是它仅删除一个索引,并且正在恢复已经替换的索引,例如:
1.loop: vusaibdsz8audvbsauzdgsavuczisagbcsuzaicbhas
2.loop: Gusaibdsz8audvbsauzdgsavuczisagbcsuzaicbhas
答案 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:]
使用切片来重建没有特定索引的字符串。
旁注:变量名称应小写。