0
私はPythonのre.subとformatの機能を使って文字列の一部を検索して置換しようとしています。 は、私のようなすべてのテキストが欲しい「ESO \ D + - \ D +」の形式で交換する 'ESO \ D {3} - \ dの{3}' 先行ゼロ使用して正規表現での文字列置換が期待通りに機能しない
私はこれが働くだろうと思った:
。re.sub(r"ESO (\d+)-(\d+)" ,"ESO {:0>3}-{:0>3}".format(r"\1",r"\2"), line)
しかし、私は奇妙な結果を得る:
'ESO 409から22には、' 'ESO 0409から022'
'ESO 539から4' が 'ESO 0539から04'
なりなり実際には私はエラーを見ることはできません私は、正しい結果を得る2つの操作を使用します。
>>> ricerca = re.search(r"ESO (\d+)-(\d+)","ESO 409-22")
>>> print("ESO {:0>3}-{:0>3}".format(ricerca.group(1),ricerca.group(2)))
ESO 409-022
なぜ 're.sub'を使用する必要がありますか?これは課題/宿題ですか? –
とにかく、文字列の代わりに関数を置換文字として渡して、その内部で書式設定を行ってみてください。 –
おかげで、私は「ricerca = re.search( - 、 "ESO 409から22" R "(\ D +)ESO(\ D +)" を)やりましたか?そしてその後、「re.sub( "ESO(" + ricerca.group(1)+ ") - (" + ricerca.group(2)+ ")"、 "ESO {:> 3 0} - {:> 3 0 } "形式(ricerca.group(1)、ricerca.group(2))、" ESO 409-22 ") 'は動作しません –