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