import pyperclip

text = pyperclip.paste()
lines = text.splitlines()
lines = [line[4:] if line.startswith(">>>") or line.startswith("...") else "# " + line for line in lines]
pyperclip.copy("\n".join(lines))

⇩のような REPL の出力を

>>> class A: pass
...
>>> def x():
... return 1
...
>>> x()
1
>>> A()
<__main__.A object at 0x7f64c810be48>

⇩に変換する

class A: pass

def x():
return 1

x()
# 1
A()
# <__main__.A object at 0x7f64c810be48>

現在のクリップボードのテキストを変換するので REPL 出力をコピペするときに貼り付けの前にこれを実行する
REPL のフォーマットじゃなくて実行できる正しい Python 構文にしたいときに便利
複数文まとめて再実行するときにも使える
実行にはライブラリ pyperclip が必要

これまで web ページで変換ツールにしていたけど
1)ページ開いて
2)入力ボックスに貼り付けて
3)出力ボックスをコピーして
という手順が面倒でクリップボードのデータをそのまま変更したほうが楽そうなのでやってみた

クリップボード履歴管理ツールを使ってると変更前のも残るので便利