Я хочу округлить все числа с плавающей точкой в строке, чтобы сказать 10 десятичных знаков.Я придумал следующую реализацию, которая находит все числа с плавающей точкой с помощью регулярных выражений, преобразует их в числа с плавающей точкой, вызывая float
для каждого из них, а затем выполняет округление с использованием строк формата в Python (например, {:.10f}".format(float("0.12345678912345777")
).
import re
def truncate_floats(input, precision):
for f in re.findall(r"[-+]?\d*\.\d{{{},}}".format(precision), input):
format_str = "{{:.{}f}}".format(precision)
input = input.replace(f, format_str.format(float(f)))
return input
In [1]: truncate_floats("x + -2.12345678912345777 + 123 + 0.123", 10)
Out[1]: 'x + -2.1234567891 + 123 + 0.123'
Есть ли способ добиться этого лучше?Код предназначен как для Python 2.7 , так и 3.7 .
Update1: строка не обязательно должна содержать пробелы между числами и другими объектами.