应该很容易,但我正在寻找一种有效的方法来执行它。
我知道我可以将字符串分成两部分并插入新值,但我试图用以下内容替换索引22-26之间的每一行:
line.replace(line[22:26],new_value)
问题
但是,该函数会替换行中与line[22:26]
中的模式类似的所有内容。
在下面的示例中,我想将标记的数字 1 替换为数字 17 :
以下是结果。请注意在1
替换17
几个地方:
因此,我不了解replace
命令的行为。是否有一个简单的解释我做错了什么?
为什么我不想要RE
索引22-26之间的值不在表单中统一。
注意:我在Unix / Linux机器上使用python 3.5。
答案 0 :(得分:1)
str.replace
将1个子字符串模式替换为字符串中的其他位置。
e.g。
'ab cd ab ab'.replace('ab', 'xy')
# produces output 'xy cd xy xy'
同样,
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:]
另外,查看您的数据,在我看来,它是一个固定宽度的文本文件。虽然我的建议可行,但处理这些数据的更有效方法是阅读它。在处理数据之前,先将记录中的不同字段分开。
如果您可以访问pandas库,则会为阅读fixed-width files提供有用的功能