在Python中如何修改字元串中的某一位字元?
01-03
例如字元串
s = "HELLOWORLD"
我只想把其中的第二個L改變成A,請問有什麼好方法?
補充一下:題主知道字元串是immutable的。我想問的是有沒有類似str.replace()這種返回新字元串的方法。只不過Python中的replace()只能指定替換的內容和個數而不能指定位置。
求大家不要鑽immutable這一點了。
比方說有一個字元串s
tmp=list(s)
tmp[n]=xxxxx
s="".join(tmp)
就修改了字元串s中第n+1個字元(從1開始數,嗯)
但我不知道和 @劉鑫 給的切片相加法哪一個更好一點。這個辦法需要做一個中間的tmp列表,但平常都避免對字元串直接用加法的。ctypes簡單暴力有效(問題也是多多的)
def replace_char(s, idx, ch):
import ctypes
OFFSET = ctypes.sizeof(ctypes.c_size_t) * 5
a = ctypes.c_char.from_address(id(s) + OFFSET)
pi = ctypes.pointer(a)
pi[idx] = ch
s = "HELLOWORLD"
s1 = "HELLOWORLD"
replace_char(s, 3, "A")
print s # "HELAOWORLD"
print s1 # "HELAOWORLD" (ops!!)
"修改字元串中第二個L"這種操作考慮正則吧
immutable string是個feature。轉成list操作?replace()這種東西本來也是個函數嗎,基本的就那些,想辦法自己實現了就行了
對字元串切片,生成新的對象,然後給新的對象賦原有的 Name。
推薦閱讀:
※Python3.5.1中如何將input讀取的字元串改為數字?
※Python 中為何沒有數字到字元串的自動轉換?
※要用python研究股票需要安裝哪些庫?
※為什麼 Python 的類不構成作用域(scope)?
※這個python程序不能再簡化了吧?