1. ホーム
  2. python

[解決済み] re.sub置換パターンにおけるキャプチャグループの後方参照への対応

2022-05-14 12:15:55

質問

文字列 0.71331, 52.25378 という文字列を受け取り 0.71331,52.25378 - つまり、数字、カンマ、スペース、数字を探し、スペースを取り除くだけです。

これは私の現在のコードです。

coords = '0.71331, 52.25378'
coord_re = re.sub("(\d), (\d)", "\1,\2", coords)
print coord_re

しかし、これでは 0.7133,2.25378 . 私は何を間違えているのでしょうか?

どのように解決するのですか?

正規表現に生の文字列を使用しているはずですので、以下を試してみてください。

coord_re = re.sub(r"(\d), (\d)", r"\1,\2", coords)

現在のコードでは、置換文字列のバックスラッシュは数字をエスケープしているので、すべてのマッチを等価な chr(1) + "," + chr(2) :

>>> '\1,\2'
'\x01,\x02'
>>> print '\1,\2'
,
>>> print r'\1,\2'   # this is what you actually want
\1,\2

バックスラッシュを文字列に残したい場合は、いつでも r プレフィックスを使うか、バックスラッシュをそれぞれエスケープして ( \\1,\\2 ).