替换数组值时,Python str对象不支持项分配

2024-10-02 20:32:57 发布

您现在位置:Python中文网/ 问答频道 /正文

当我试图替换部分数据时,它会给我一个错误。
我想在返回数据之前替换部分数据的十六进制值。
我该如何处理?

data, addr = s.recvfrom(32768)
if knownClient is None:
    knownClient = addr
if addr == knownClient:
    s.sendto(data, knownServer)
    print "Sent     : " + ":".join("{0:02X}".format(ord(c)) for c in data)
else:
    data[10] = 0xFF #error_here
    data[11] = 0x0A #error_here
    s.sendto(data, knownClient)

Tags: 数据nonedataifhereis错误error
2条回答

您需要生成一个新字符串:

data = data[:10] + chr(0xFF) + data[11:]

不能修改字符串-它们是不可变的。如果要更改字符串,有几个选项。第一个选项是创建一个新字符串。

data = data[:10]+chr(0xFF) + chr(0x0A) + data[12:]

如果要经常修改数据,则可以使用列表或数组

datalist = list(data)
datalist[10] = chr(0xFF)
datalist[11] = chr(0x0A)

然后,如果要在修改后返回字符串:

data = ''.join(datalist)

相关问题 更多 >