簡體   English   中英

'str'對象不支持項目分配(Python)

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

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