2017-09-20 8 views
-2

私はフォーラムに入っていますが、これは幸運ではありません。これは簡単なことですが、基本的には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 

任意のアイデアはどのように私はそれを達成することができます。

ありがとうございます。

+0

文字列は変更できません。基本的には、新しい文字列を作成してそれをリスト項目に割り当てる必要があります。 – wwii

答えて

1

文字列は不変です - ので、ある文字列スライスが、ある - かつて彼らは変更することはできません作成ストリングも。

あなたが保持されるべきスライスの一部を使用して新しい文字列を作成した後、インデックス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] 
0

文字列は不変ですが、ここではリストを更新できます。

新しい文字列を作成してリスト項目を更新することができます。あなたのリストAlteringn

>>> 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の引き出す

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

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

文字列を、タプルのように、Pythonで不変です。つまり、それらを変更することはできません(ほとんどの場合、文字列に連結できます)。新しいリストを生成する必要があります。地図を使用する方法:

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

新しい文字列を作成するソリューションは動作しますが、新しい文字列を作成する必要があります。

+0

私はラムダをより詳細にチェックする必要があります。なぜなら、それがどのように機能するのか、本当にうまくいくのか、本当に良い考えがないからです。ありがとう – VENTIZ

関連する問題