Я не знаю, есть ли хорошее решение для этого. В идеале, был бы какой-то способ изменить поведение интерпретатора, чтобы он принимал ввод / копирование такого рода. Вот несколько альтернативных предложений:
Используйте тройные кавычки, чтобы сохранить пример в строку. Затем используйте exec:
>>> def chomp_prompt(s): return '\n'.join(ln[4:] for ln in s.splitlines())
...
>>> dirty = """>>> class eg(object):
... ... def __init__(self, name):
... ... self.name = name
... ... def hi(self):
... ... print "Hi %s" % (self.name)
... ...
... >>> greeter = eg("Bob")
... >>> greeter.hi()
... """
>>> clean = chomp_prompt(dirty)
>>> exec clean
Hi Bob
>>>
Мое решение не только помещается в одну строку (поэтому вам будет легко скопировать / вставить его в интерпретатор), оно работает на примере выше: D:
>>> s = r'''>>> def chomp_prompt(s): return '\n'.join(ln[4:] for ln in s.splitlines())
... ...
... >>> dirty = """>>> class eg(object):
... ... ... def __init__(self, name):
... ... ... self.name = name
... ... ... def hi(self):
... ... ... print "Hi %s" % (self.name)
... ... ...
... ... >>> greeter = eg("Bob")
... ... >>> greeter.hi()
... ... """
... >>> clean = chomp_prompt(dirty)
... >>> exec clean'''
>>> s2 = chomp_prompt(s)
>>> exec s2
Hi Bob
Мое второе предложение - взглянуть на способность ipython открывать для вас редактор и выполнять то, что вы ввели после завершения редактирования:
http://ipython.scipy.org/doc/rel-0.9.1/html/interactive/tutorial.html#source-code-handling-tips
Если вы установите emacs в качестве вашего редактора, я знаю, что у него есть возможность удалять прямоугольник текста (вы, вероятно, можете угадать команду: M-x delete-rectangle), что идеально подойдет для избавления от этих надоедливых подсказок. Я уверен, что многие другие редакторы также имеют это.