簡體   English   中英

替換python中字符串的一個字符

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM