借助Replacing selected elements in a list in Python的答案,我有以下测试代码:
newline = [10,10,20,20,30,30,40,40]
def replace_element(newline, new_element, indices):
for i in indices:
newline[6] = (newline[6] - 30) * 1.13
return newline
newline = replace_element(newline, newline[6] , [6])
print(newline)
但是我的rrdtool数据流需要冒号分隔符而不是逗号(即24.73:0.06:264.44:0.61:886.55:2.14:88.91:0.21)所以我得到了
TypeError:'str'对象不支持项目分配
我可以在代码中处理此问题,还是需要在replace_element行之后替换逗号?
答案 0 :(得分:2)
字符串不是真的可变(我认为),但它们有split
方法将它们转换为列表:
>>> data = '24.73:0.06:264.44:0.61:886.55:2.14:88.91:0.21'
>>> data.split(':')
['24.73', '0.06', '264.44', '0.61', '886.55', '2.14', '88.91', '0.21']
这是一个字符串列表。也许你希望它们是实际的数字:
>>> data_as_list = list(map(float, data.split(':')))
>>> data_as_list
[24.73, 0.06, 264.44, 0.61, 886.55, 2.14, 88.91, 0.21]
即使你不这样做,你仍然可以分配任何你想要的东西:
>>> data_as_list[6] = 'some other thing'
>>> data_as_list
[24.73, 0.06, 264.44, 0.61, 886.55, 2.14, 'some other thing', 0.21]
然后你可以把它变成一个字符串:
>>> ':'.join(map(str, data_as_list))
'24.73:0.06:264.44:0.61:886.55:2.14:some other thing:0.21'