You can use the following re.sub to do the replacements (demo).
Edit for OP's comments:
Given that the file is fairly small, I'd iterate through it while reading, applying the substitution as I go, and then dump all the subbed lines into the same location.
import re
file_path = "/tmp/74987707.txt" # substitute your own
output_lines = []
with open(file_path, mode="rt") as f:
for line in f:
subbed_line = re.sub(
r'("position": \[\d+(?:\.?\d*), \d+(?:\.?\d*))(])',
r'\1, 0\2',
line
)
output_lines.append(subbed_line)
with open(file_path, mode="wt") as f:
f.writelines(output_lines)
Regex explanation:
- group 1
("position": \[\d+(?:\.?\d*), \d+(?:\.?\d*))
(
start
"position": \[
match exactly (escaping [
)
\d+
match one or more digit
(?:\.?\d*)
non capturing group, match a possible literal dot .
and one or more digits
,
match exactly
\d+(?:\.?\d*)
see above
)
end
- group 2
(\])
(
start
\]
match exactly (escaping ]
)
)
end