[英]Replacing one character of a string in python
在python中,字符串是可變的嗎? 行someString[3] = "a"
拋出錯誤
類型錯誤:“str”對象不支持項目分配
我明白為什么(因為我可以寫 someString[3] = "test" 並且這顯然是非法的)但是有沒有一種方法可以在 python 中做到這一點?
Python 字符串是不可變的,這意味着它們不支持 item 或 slice 分配。 您必須使用即someString[:3] + 'a' + someString[4:]
或其他一些合適的方法構建一個新字符串。
您可以使用字符列表,而不是將您的值存儲為字符串:
>>> l = list('foobar')
>>> l[3] = 'f'
>>> l[5] = 'n'
然后,如果要將其轉換回字符串以顯示它,請使用以下命令:
>>> ''.join(l)
'foofan'
如果您一次更改多個字符,則此方法將比每次更改一個字符時構建一個新字符串快得多。
在足夠新的 python 中,您還可以使用內置的bytearray
類型,它是可變的。 請參閱標准庫文檔。 但這里的“足夠新”意味着 2.6 或更高版本,所以這不一定是一個選項。
在較舊的 python 中,您必須如上所述創建一個新的str
,因為它們是不可變的。 這通常是最易讀的方法,但有時使用不同類型的可變序列(如字符列表,或者可能是array.array
)是有意義的。 array.array
雖然有點笨重,但通常會避免。
>>> import ctypes
>>> s = "1234567890"
>>> mutable = ctypes.create_string_buffer(s)
>>> mutable[3] = "a"
>>> print mutable.value
123a567890
用這個:
someString.replace(str(list(someString)[3]),"a")
只需定義一個新字符串,該字符串等於您要對當前字符串執行的操作。
a = str.replace(str[n],"")
return a
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.