Python: replace replacing wrong line location

I have the original line:
2.48724e-008 0.00022974 0.65 1 4 0 0 0.0002 2 2 2 0
I want a new line:
6.1054382342e-10 1.26357e-05 0.65 1 4 0 0 1.1e -05 2 2 2 0

the code:

replacement = {'2.48724e-008':'6.1054382342e-10','0.00022974':'1.26357e-05','0.0002':'1.1e-05')}
for src, target in replacement.iteritems():
      line = line.replace(src,target)

But the result was:
6.1054382342e-10 1.1e-052974 0.65 1 4 0 0 1.1e-05 2 2 2 0

The second number is incorrect. It looks like python found "0.0002" in the source line and replaced it with "1.1e-05" no matter what after it.

Could you help me with this?

+4
source share
3 answers

- , dict . ( ) ,

replacement = (
  ('2.48724e-008','6.1054382342e-10'),
  ('0.00022974','1.26357e-05'),
  ('0.0002','1.1e-05')
)   
for src, target in replacement:
  line = line.replace(src,target)
+5

:

replacement = {'2.48724e-008':'6.1054382342e-10','0.00022974':'1.26357e-05','0.0002':'1.1e-05')}
for src, target in sorted(replacement.items(), reverse=True):
    line = line.replace(src,target)
+3

list of tuple :

 >>> replacement = [('2.48724e-008','6.1054382342e-10'), ('0.00022974','1.26357e-05'), ('0.0002':'1.1e-05'})]
 >>> for src, target in replacement:
     ... line = line.replace(src,target)

: dict python {'key': 'value'} , . , , dict.iteritems(), . OrderedDict , , . ( ):

>>> import collections
>>> sequence_list = [('2.48724e-008','6.1054382342e-10'),('0.00022974','1.26357e-05'), ('0.0002':'1.1e-05'})]
>>> replacement = collections.OrderedDict()
>>> for key, value in sequence_list:
    replacement[key] = value
+2

All Articles