[英]'str' object does not support item assignment (Python)
def remove_char(text):
for letter in text[1]:
text[0] = text[0].replace(letter," ")
return text[0]
這是返回:
'str' object does not support item assignment
為什么? 我該如何做呢?
在Python中,字符串不是可變的,這意味着它們無法更改。 但是,您可以將整個變量替換為新版本的字符串。
例:
text = ' ' + text[1:] # replaces first character with space
字符串是不可變的。 通過嘗試:
text[0] = text[0].replace(letter," ")
您正在嘗試訪問字符串並對其進行更改,由於字符串的不可變性,因此不允許這樣做。 相反,您可以使用for
循環和一些切片:
for i in range(0, len(y)):
if y[i] == ",":
print y[i+1:len(y)]
break
您可以更改分配給變量的字符串(第二段代碼),而不是字符串本身(您的代碼段)。
假設參數text
是字符串,則for letter in text[1]:
的行for letter in text[1]:
我來說沒有多大意義,因為text[1]
是單個字符。 遍歷一個單字母字符串有什么意義?
但是,如果text
是一個字符串列表 ,則您的函數不會引發任何異常,它僅返回將第二個字符串( text[1]
text[0]
所有字母替換為第一個字符串( text[0]
)后得到的字符串text[1]
)的空白處( " "
)。
以下示例顯示remove_char
的參數為字符串列表時如何工作:
In [462]: remove_char(['spam', 'parrot', 'eggs'])
Out[462]: 's m'
In [463]: remove_char(['bar', 'baz', 'foo'])
Out[463]: ' r'
In [464]: remove_char(['CASE', 'sensitive'])
Out[464]: 'CASE'
也許這不是預期的行為...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.