6

私はPython2.6を使用していて、長いプログラムにたくさんの印刷ステートメントがあります。それらすべてをカスタムの印刷関数に置き換えるにはどうすればよいですか。scribble()と呼びましょう。印刷を検索して落書きに置き換えると(閉じ括弧はありません。正規表現がその方法だと思いますが、1日ほど実験していて、うまくいかないようです。

4

6 に答える 6

8

エディターの使用

使用しているエディターはわかりませんが、正規表現の検索と置換がサポートされている場合は、次のように試すことができます。

Replace: print "(.*?)"
With: scribble( "\1" )

これをNotepad++でテストしました。

Pythonの使用

または、Python自体でそれを行うこともできます。

import re

f = open( "code.py", "r" )
newsrc = re.sub( "print \"(.*?)\"", "scribble( \"\\1\" )", f.read() )
f.close()

f = open( "newcode.py", "w" )
f.write( newsrc )
f.close()
于 2012-05-11T21:42:32.323 に答える
3

実際には、付属のツールprintを使用して、すべてのステートメントをprint()関数に変換できます。このツールは通常、Python 2 プログラムを Python 3 プログラムにできるだけ完全に変換するために使用されますが、実際には小さな修正の集まりであり、実行する修正を選択できます。あなたの場合、呼び出し時に引数を指定することで、フィクサーのみを実行できます。2to3print-f print2to3

于 2012-05-11T22:07:51.133 に答える
1

それを置き換えるのではなく、印刷機能をオーバーロードすることができます!

Python 2.x では、これを直接行うことはできません。しかし、python 2.x を python 3 コードに変換するツールがあります。

コンバーターを介してコードを実行し、印刷関数をオーバーロードします。

Python の 2.6 より下のバージョンは、 from futureを使用することで、印刷機能 (したがってオーバーロード) を引き続きサポートします。そのため、いったん隠蔽されたコードは、古いバージョンでも動作するはずです。3.xを使用していない場合は2.7を使用しているように見えるので、将来的には必要ないかもしれません

于 2012-05-11T21:59:12.013 に答える
0

これは、実際の IDE をまだ使用していない場合に役立つ場所の 1 つです。PyCharm や Eclipse などの IDE を使用すると、リファクタリングを使用して、特定の関数へのすべての呼び出しを別の呼び出しに置き換えることができます。

于 2012-05-11T21:41:38.877 に答える