在字符串中赋值

时间:2015-09-28 20:55:39

标签: python string

这是我的代码和错误消息,并且在Python中想知道,如果我想将一个字符的值分配给字符串中另一个字符的值,该怎么做?

错误讯息:

    str[i] = str[i+1]
TypeError: 'str' object does not support item assignment

源代码:

class Solution(object):
    def RemoveDupCharacters(self, str):
        dic = {}
        for i in range(0,255):
            dic[i] = 0

        for i in range(len(str)):
            if dic[ord(str[i])] == 0:
                dic[ord(str[i])] = 1
            str[i] = str[i+1]
        return str

if __name__ == "__main__":
    s = Solution()
    print s.RemoveDupCharacters('aaaa')

3 个答案:

答案 0 :(得分:3)

您无法在字符串中分配字符。字符串是不可变的。您可以创建具有所需字符的新字符串,也可以使用可变的数据类型。例如,在此解决方案中,您可以在字符串中构造字符列表,然后删除重复项,然后从清理后的列表中重新构建字符串。

答案 1 :(得分:1)

由于字符串是不可变的,因此无法对其进行编辑。而是使用列表来动态编辑内容。

class Solution(object):
    def RemoveDupCharacters(self, str):
        temp_str = []
        for i in range(len(str)):
            if str[i] not in temp_str:
                temp_str.append(str[i])

        return ''.join(temp_str)

if __name__ == "__main__":
    s = Solution()
    print s.RemoveDupCharacters('aaaa')

警告。上述解决方案将删除所有重复的字符。例如:

s.RemoveDupCharacters('this is a quick test of removal')

的产率:

this aquckeofrmvl

注意:如果您尝试删除重复项,那么this solution会更优雅。

答案 2 :(得分:1)

使用您的代码并重新处理它以使用列表,一个有效的表示形式是:

class Solution(object):

    def remove_dup_characters(self, input_string):
        letters = []
        s = []
        for c in input_string:
            if c not in letters:
                s.append(c)
                letters.append(c)
        return "".join(s)

    def remove_dup_characters2(selfself, input_string):
        return "".join(set(input_string))

if __name__ == "__main__":
    s = Solution()
    print s.remove_dup_characters('aaaabbaaa')
    print s.remove_dup_characters2('bbbbasdopiwerasdawera;lasoisdatatasdas')

产生

ab
abedilopsrtw;