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

时间:2017-02-16 14:18:00

标签: string python-3.x replace

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

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

line.replace(line[22:26],new_value)

问题

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

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

enter image description here

以下是结果。请注意在1替换17几个地方:

enter image description here

因此,我不了解replace命令的行为。是否有一个简单的解释我做错了什么?

为什么我不想要RE

索引22-26之间的值在表单中统一。

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

1 个答案:

答案 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提供有用的功能