从起点修改数组中的字符串

时间:2017-09-20 19:45:45

标签: python arrays

我一直在搜索论坛,但没有运气这个,我希望它是一个简单的,基本上我想修改一个列表中的字符串从每个参数的12个字符开始。这是清单:

[' address 0 201.175.131.20 0', ' address 2 4.2.2.2 0', ' address 0 107.22.0.0 0.0.255.255']

我期待这样的事情:

address[0][11:] = "192.168.10.1"

但它说:

TypeError: 'str' object does not support item assignment

任何想法我如何实现它。

由于

3 个答案:

答案 0 :(得分:1)

字符串是不可变的 - 一旦创建它们就无法更改 - 字符串切片也是如此,它们也是字符串。

您必须使用应保留的切片部分构建 new 字符串,然后替换索引0处的前一个字符串对象:

address[0] = address[0][:11] + "192.168.10.1" 
print address
# [' address 0 192.168.10.1', ' address 2 4.2.2.2 0', ' address 0 107.22.0.0 0.0.255.255']

要在列表中复制此内容,请使用列表理解

address = [s[:11] + "192.168.10.1" for s in address]

答案 1 :(得分:0)

字符串是不可变的,但在这里你可以更新列表。

您可以通过创建新字符串来更新列表项。

>>> lista = [' address 0 201.175.131.20 0', ' address 2 4.2.2.2 0', ' address 0 107.22.0.0 0.0.255.255']
>>> lista[0] = lista[0][:11] + "192.168.10.1"
>>> lista
[' address 0 192.168.10.1', ' address 2 4.2.2.2 0', ' address 0 107.22.0.0 0.0.255.255']

改变你的清单:

[ip[:11] + "192.168.10.1" for ip in lista]

拉出所有的ip:

>>> [ip.split(" ")[3] for ip in lista]
['201.175.131.20', '4.2.2.2', '107.22.0.0']

答案 2 :(得分:0)

与元组一样,字符串在Python中是不可变的。这意味着你不能在适当的位置更改它们(好吧,几乎,你可以连接到一个字符串)。您需要生成一个新列表。使用地图的一种方法:

map(lambda x: x[:12]+'whatever', yourlist)

创建新字符串的任何解决方案都可以使用,但您必须创建一个新字符串。