使用regexp查找,舍入和替换字符串中的数字

时间:2016-06-16 12:16:07

标签: python regex python-2.7 python-3.x

我有一个包含多个坐标的字符串,每个坐标都具有 15(和16)-digit 精度。字符串如下所示:

POLYGON ((63.3143749208534741 58.716055226046571,63.406105383130274 58.6706773671378561,63.4052744833828112 58.670392586236112, ...))

我的目标是输出相同的字符串,但坐标为四舍五入,具有严格的 13位精度。

POLYGON ((63.3143749208535 58.7160552260466,63.4061053831303 58.6706773671379,63.4052744833828 58.6703925862361,...

我想它可以用正则表达式完成,但我无法理解如何做到这一点。

熟悉使用 python的模块的人可以解释一下吗?

1 个答案:

答案 0 :(得分:4)

你可以在re.sub中使用lambda func

>>> s = 'POLYGON ((63.3143749208534741 58.716055226046571,63.406105383130274 58.6706773671378561,63.4052744833828112 58.670392586236112'
>>> re.sub(r'\d+\.\d{13,}', lambda m: format(float(m.group(0)), '.13f'), s)
'POLYGON ((63.3143749208535 58.7160552260466,63.4061053831303 58.6706773671379,63.4052744833828 58.6703925862361'