代码之家  ›  专栏  ›  技术社区  ›  Sam333

Python替换由split函数分隔的列表索引

  •  0
  • Sam333  · 技术社区  · 5 年前

    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 回复  |  直到 5 年前
        1
  •  1
  •   Nick SamSmith1986    5 年前

    您可以使用带有三元运算符的列表理解来替换第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'
    ]