3

IPythonコンソールにコピーされたコードを自動的に再フォーマットさせる方法はありますか?

In [131]: a = [1, 2, 3]

In [132]: a
Out[132]: [1, 2, 3]

標準のPythonプロンプトを使用します。つまり、

>>> a = [1, 2, 3]
>>> a
[1, 2, 3]

動機は次のとおりです。

  1. ここでは、行番号(およびおそらく余分な改行)は意味がありません。
  2. 標準形式は、doctestで簡単に使用できます。

興味深いことに、IPythonのQtコンソールは「コピー」と「コピー(生のテキスト)」の両方を提供し、「コピー」のデフォルトの動作は次のようになります。

a = [1, 2, 3]

a
Out[132]: [1, 2, 3]

どうやら、ある種の自動再フォーマットが達成可能です。この機能をカスタマイズする方法はありますか?

PromptManager表示されるプロンプトをカスタマイズするためにどちらを使用できるかを知っています(例: http://nb.nathanamy.org/2012/09/terminal-productivity/)。ただし、IPythonプロンプト(数字付き)はインタラクティブセッションで役立ちます。コピーしたバージョンだけを再フォーマットしたい。

4

2 に答える 2

0

これを行う組み込みの方法はわかりませんが、独自の %magic 関数を定義することで自分を助けることができるかもしれません。

何かのようなもの

カスタムマジックを定義および登録する方法については、ドキュメントを参照してください。

from IPython.core.magic import (register_line_magic, register_cell_magic,
                            register_line_cell_magic)

@register_line_magic
def export_prompt(start, end):
    "Exporting input and output within given limits"
    for i in range(start, end):
        in_ = In.get(i)
        out_ = Out.get(i)
        print in_
        print out_

# We delete this to avoid name conflicts for automagic to work
del export_prompt

私はこれを自分で試してみます。うまくいくかどうか見てみましょう。

編集 すぐには機能しないようです。カスタム マジックにアクセスする方法InOutその内部を理解する必要があります。しかし、参考のために答えを残しておきます。他の誰かがサンプルを完成させることができるかもしれません。

于 2013-02-01T07:24:41.150 に答える