2016-06-16 13 views
-1

私は、それぞれが15(および16) - デジットという精度の座標を持つ文字列を持っています。文字列は次のようになります。文字列内の数字を正規表現で検索、丸め、置き換える

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,...

私はそれが正規表現で行わDEことができますね、私はそれを行う方法を理解することはできません。

誰かが慣れているかもしれませんpythonの再モジュールそれを説明しますか?

+2

内のラムダfuncを使用することができますか?また、www.regex101.comは正規表現を検証するのに適しています。 –

+1

正規表現は正しいツールではありません。コンマでポリゴンスペックを分割し、配列内の数値を取得し、数値を丸めながら仕様を書き直すだけです。 – Kusalananda

答えて

4

あなたは、あなたがこれまでに試してみました何re.sub

>>> 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' 
関連する問題