String 不使用正则表达式按索引替换字符串
这应该很容易,但我正在寻找一种有效的方法来执行它 我知道我可以将字符串分为两部分并插入新值,但我尝试将索引22-26之间的每一行替换为以下内容: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]
中的模式类似的所有内容
在下面的示例中,我想将标记的编号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:]