Python заменить индекс списка, разделенного функцией split - PullRequest
0 голосов
/ 25 января 2020

У меня есть длинный массив, который выглядит примерно так:

arr=["5;V;K;4406632419324152;0123;172;9;0;0;06012020;3000"
"2;M;K;4406553211445698;0123;124;2;0;0;06012020;2000"
"3;M;K;5412115956124218;0123;236;3;0;1;06012020;2000"
"4;V;K;4406621015140546;0123;131;9;0;0;06012020;3000"]

Каждый индекс представляет собой строку из текстового файла. Контент не важен, однако, я не знаю, что длина любого индекса массива (то есть len (arr [i]) будет отличаться для каждого индекса, и только так я могу быть уверен, что я получаю доступ к "V" или "K" с помощью функции разделения)

arr[0].split(";")[1]

Существует ли простой код, который заменит 6-й элемент (после разделения) в индексе на новое значение?

Чего я пытаюсь добиться, так это напечатать

из

"5; V; K; 4406632419324152; 0123; 172; 9 ; 0; 0; 06012020; 3000 "

до

" 5; V; K; 4406632419324152; 0123; 172; новое_значение ; 0; 0; 06012020; 3000"

1 Ответ

1 голос
/ 25 января 2020

Вы можете использовать понимание списка с троичным оператором для замены 6-го элемента:

arr=["5;V;K;4406632419324152;0123;172;9;0;0;06012020;3000",
"2;M;K;4406553211445698;0123;124;2;0;0;06012020;2000",
"3;M;K;5412115956124218;0123;236;3;0;1;06012020;2000",
"4;V;K;4406621015140546;0123;131;9;0;0;06012020;3000"]
new_value = 4
arr[0] = ';'.join(v if i != 6 else str(new_value) for i, v in enumerate(arr[0].split(';')))
print(arr)

Вывод:

['5;V;K;4406632419324152;0123;172;4;0;0;06012020;3000', 
 '2;M;K;4406553211445698;0123;124;2;0;0;06012020;2000', 
 '3;M;K;5412115956124218;0123;236;3;0;1;06012020;2000', 
 '4;V;K;4406621015140546;0123;131;9;0;0;06012020;3000'
]
...