Есть ли ограничение на аргумент "поиск" в функции замены Python? - PullRequest
2 голосов
/ 24 апреля 2020

Я использую Python для поиска и замены строки в текстовом файле. Мне нужно заменить значение 0,000001 (6 знаков после запятой), код не заменяет это значение, но заменит 0,0001 (4 знака после запятой). Следовательно, есть ли ограничение на этот входной аргумент (см. Код ниже)?

a0 = 0.000001
ka = 0.1
dt = 7
an = a0+ka*dt

with open('file.txt', 'r') as f:
    data1 = f.read()
    data1 = data1.replace(str(a0), str(an), 1)

with open ('file.txt', 'w', 1) as f:
    f.write(data1)

1 Ответ

2 голосов
/ 25 апреля 2020

Дело не в «пределе», а в числовой записи c:

>>> a0 = 0.000001
>>> print(a0)
1e-06
>>> a0 = 0.0001
>>> print(a0)
0.0001
>>>

Считанная из файла строка «0,000001» не будет заменена, поскольку метод replace() искать "1e-06". То же не происходит с "0,0001".

Формат a0 как float , вместо:

    ...
    data1 = data1.replace(str("%f" % a0), str(an), 1)
    ...
...