【问题标题】:Colored representation of objects in IPython terminal shellIPython 终端外壳中对象的彩色表示
【发布时间】:2013-08-01 10:01:40
【问题描述】:

如果我想在 QtConsole 或 IPython Notebook 中使用彩色表示对象,我只需将 _repr_html_ 方法添加到对象类。

In [1]: class Test(object):
            def __init__(self, x):
                self.x = x

            def _repr_html_(self):
                return '''<span style="color: green">
                       Test{<span style="color: red">%s</span>}
                       </span>''' % self.x
In [2]: Test(33)
Test{33}

这会给我一个漂亮的彩色表示,其中Test{ 将是绿色,33 是红色,} 又是绿色。

有没有办法在终端版本的 IPython Shell 中以跨平台的方式做到这一点?

理想情况下,它的工作方式与prompt customization 的模板相同:

In [1]: class Test(object):
            def __init__(self, x):
                self.x = x

            def _repr_shell_(self):
                return '{color.Green}Test{{color.Red}%s{color.Green}}' % self.x

如果没有,我可以在我自己的控制台应用程序中以某种方式导入和使用 IPython 的内部跨平台着色系统吗?我查看了 IPython 代码库,但没有找到任何直接使用它的方法:(

【问题讨论】:

    标签: ipython


    【解决方案1】:

    您可以使用 IPython 中的 TermColors
    一个最小的例子是:

    from IPython.utils.coloransi import TermColors as color
    class Test(object):
       def __init__(self, x):
           self.x = x
       def __repr__(self):
           return '{0}Test{{{1}{2}{0}}}'.format(color.Green, color.Red, self.x)
    

    【讨论】:

    • 你知道有什么方法可以在 IPython 环境之外使用 TermColors 吗?在 POSIX 系统上它可以正常工作,但在 Windows 上它只是打印出 POSIX 转义码。
    • 您可以检查 colorama,查看这些 SO 问题:stackoverflow.com/q/12492810/2870069stackoverflow.com/q/8358533/2870069
    • 是的,我知道 colorama,但由于 IPython 已经做到了,我想避免额外的依赖 :)
    猜你喜欢
    • 1970-01-01
    • 2012-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-19
    • 2013-01-18
    • 1970-01-01
    • 2018-06-19
    相关资源
    最近更新 更多