在Python中如何修改字元串中的某一位字元?

例如字元串

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程序不能再簡化了吧?

TAG:Python | 編程 | Python入門 |