2

I want to make IPython automatically print all str results.

In [13]: 'hi\nhi' # I don't want this output
Out[13]: 'hi\nhi'

In [14]: print(_) # I want it like this, but without using print on every result.
hi
hi
HappyFace
  • 3,439
  • 2
  • 24
  • 43

1 Answers1

3

It's a really dirty hack but you can monkey-patch the IPython.lib.pretty.RepresentationPrinter:

In [9]: import IPython.lib.pretty                                                                                                                                                                     

In [10]: class NewPrettier(IPython.lib.pretty.RepresentationPrinter): 
    ...:     def pretty(self, obj): 
    ...:         if isinstance(obj, (str,)): 
    ...:             self.text(obj) 
    ...:         else: 
    ...:             super().pretty(obj) 
    ...:                                                                                                                                                                                              

In [11]: IPython.lib.pretty.RepresentationPrinter = NewPrettier                                                                                                                                       

In [12]: "a"                                                                                                                                                                                          
Out[12]: a

EDIT: to remove Out[n]:

In [24]: import IPython.core.displayhook                                                                                                                                                              

In [25]: IPython.core.displayhook.DisplayHook.write_output_prompt = lambda :None                                                                                                                      

In [26]: "X"                                                                                                                                                                                          
X
RafalS
  • 5,834
  • 1
  • 20
  • 25