如何在关键字后直接替换()列表项中的特定值

How to replace() a specific value within a list item directly after a keyword

目前有一个标准的 txt 样式文件,我正在尝试打开、复制和更改其中的特定值。但是,标准的 replace() fn 不会产生任何差异。文件的第 14 行如下所示:

 '    Bursts: 1 BF: 50 OF: 1  On: 2 Off: 8'

这是我当前的代码:

conf_file = 'configs/m-b1-of1.conf'
read_conf = open(conf_file, 'r')
conf_txt = read_conf.readlines()

conf_txt[14].replace(conf_txt[14][13], '6')

v_conf

不过,此后,我引用的特定值没有应用任何更改(在本例中,是上面第 14 行中的第一个“1”。

如有任何帮助,我们将不胜感激 - 谢谢!

试试这个

conf_file = 'configs/m-b1-of1.conf'
read_conf = open(conf_file, 'r')
conf_txt = read_conf.readlines()

conf_txt[14] = conf_txt[14].replace(conf_txt[14][13], '6')

替换函数不编辑实际的字符串,它只是returns被替换的值,所以你必须重新定义数组中的字符串

这里我觉得有几点:

  1. 我复制了你的字符串,第一个1实际上是字符12
  2. 需要将替换结果赋值给某些东西(它会给你一个新的字符串)
  3. 替换,将所有“1”替换为“6”!

示例:

>>> a = '    Bursts: 1 BF: 50 OF: 1  On: 2 Off: 8'
>>> a = a.replace(a[12], '6')
>>> a
'    Bursts: 6 BF: 50 OF: 6  On: 2 Off: 8'

如果您只想替换该字符的第一个实例(或 N 个实例),您需要让 replace() 知道:

>>> a = '    Bursts: 1 BF: 50 OF: 1  On: 2 Off: 8'
>>> a = a.replace(a[12], '6', 1)
>>> a
'    Bursts: 6 BF: 50 OF: 1  On: 2 Off: 8'

请注意,上面只替换了“Bursts”而不是“OF”