![](/img/trans.png)
[英]How do I replace a word from a string without using .replace() method as I want the word to be removed only once
[英]How do I remove specific elements from a string without using replace() method?
我正在嘗試使用其索引遍歷字符串並刪除特定元素。 由於字符串長度隨着元素的刪除而變短,因此在到達最終元素時它總是超出范圍。
這是一些代碼來說明我正在嘗試做的事情。 例如,從“1.2.3.4”變為“1234”。
string = "1.2.3.4"
for i in range(len(string)):
if string[i] == ".":
string = string[:i] + string[i+1:]
我知道有替代方法,例如使用名為replace()
的字符串方法,我可以運行string = string.replace(string[i], "", 1)
或者我可以遍歷單個元素(而不是索引)。
但是我將如何使用上述方法(遍歷字符串索引)來解決它? 在循環到達字符串的最后一個元素后,我可以使用哪些技術來停止循環? 在不繼續推進索引的情況下,這將使 go 超出范圍,因為字符串中的元素已被刪除。
用這個:
string = "1.2.3.4"
res = ""
for s in string:
if s != '.':
res += s
結果當然是“1234”。
可以這樣完成(使用 try/except 塊),但這並不是解決這個問題(或任何問題)的好方法
string = "1.2.3.4"
for i in range(len(string)):
try:
if string[i] == ".":
string= string[:i]+string[i+1:]
except:
IndexError
結果是1234
當然,唯一真正的變化是,通過在循環周圍添加 try/except,我們將自己從 IndexError 中解救出來,一旦我們嘗試訪問字符串中現在超出范圍的元素,通常會出現這種情況
一旦發生這種情況,異常就會被捕獲,我們只需使用完成的字符串退出循環
你可以使用re
模塊:
import re
string = "1.2.3.4"
string = re.sub('\.','',string)
print(string)
如果我理解正確,您想通過其索引修改字符串,同時它的長度不斷變化。
那是相當危險的。
你遇到的問題是由range(len(string))
引起的。看,一旦range
固定,它就不會改變。在循環中, string
改變,它變得更短,這就是你超出范圍的原因錯誤。
因此,您要做的是在循環時跟蹤string
,並使用if-else
查找 '.',這是一個示例:
string = '1.2.3.4'
i = 0
while i < len(string):
if string[i] == '.':
string = string[:i] + string[i+1:]
else:
i += 1
不過,有很多方法可以處理你的字符串,不要使用這個,這不好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.