Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 不使用正则表达式按索引替换字符串_String_Python 3.x_Replace - Fatal编程技术网

String 不使用正则表达式按索引替换字符串

String 不使用正则表达式按索引替换字符串,string,python-3.x,replace,String,Python 3.x,Replace,这应该很容易,但我正在寻找一种有效的方法来执行它 我知道我可以将字符串分为两部分并插入新值,但我尝试将索引22-26之间的每一行替换为以下内容: 行。替换(行[22:26],新值) 问题 但是,该函数会替换行中与行[22:26]中的模式类似的所有内容 在下面的示例中,我想将标记的编号1替换为编号17: 以下是结果。请注意在以下几个位置将1替换为17: 因此,我不理解replace命令的行为。我做错了什么,有什么简单的解释吗 为什么我不想要RE 指数22-26之间的值在形式上不统一 注意:我在

这应该很容易,但我正在寻找一种有效的方法来执行它

我知道我可以将字符串分为两部分并插入新值,但我尝试将索引22-26之间的每一行替换为以下内容:

行。替换(行[22:26],新值)

问题

但是,该函数会替换行中与
行[22:26]
中的模式类似的所有内容

在下面的示例中,我想将标记的编号1替换为编号17

以下是结果。请注意在以下几个位置将
1
替换为
17

因此,我不理解
replace
命令的行为。我做错了什么,有什么简单的解释吗

为什么我不想要RE

指数22-26之间的值在形式上不统一


注意:我在Unix/Linux机器上使用的是python 3.5。

str.replace
将字符串中的一个子字符串模式替换为另一个子字符串模式

e、 g

同样地

mystr = 'ab cd ab ab'
mystr.replace(mystr[0:2], 'xy')
# also produces output 'xy cd xy xy'
您可以做什么,只替换位置22-26中的字符

line = line[0:22] + new_value + line[26:]
另外,看看你的数据,我觉得它是一个固定宽度的文本文件。虽然我的建议行得通,但处理这些数据的更可靠的方法是读取数据&在处理数据之前,先分离记录中的不同字段


如果您可以访问该库,它将提供一个有用的函数,仅用于阅读

行[22:26]
提供一个带有
1
和一些空格的字符串。您可以使用此模式将此行中的每个事件替换为
new\u值
line = line[0:22] + new_value + line[26:]