如何从 python 打印 \[ 和 \] 到终端?

Posted

技术标签:

【中文标题】如何从 python 打印 \\[ 和 \\] 到终端?【英文标题】:How to print \[ and \] to terminal from python?如何从 python 打印 \[ 和 \] 到终端? 【发布时间】:2015-11-04 11:22:32 【问题描述】:

我可以使用诸如print "\033[31m red text \033[0m" 之类的代码将 ANSI 颜色代码从 python 打印到终端,该代码以红色打印“红色文本”。

但是,在换行时,终端仍然计算不可见的控制字符,因此文本换行不正确,就好像行比实际长一样。反向搜索也很奇怪,显示的文本与光标下的实际内容不匹配。

以下链接(和其他) https://wiki.archlinux.org/index.php/Color_Bash_Prompt#Regular_user_2 似乎表明我需要在 \[\] 中包装颜色代码,以便终端可以正确地将光标放在屏幕上。但是,当我在 python 中print "\[\033[31m\]" 时,括号会出现在屏幕上。

如何将\[\] 控制字符从python 发送到终端?

(我发现colored等颜色库也有同样的问题)

【问题讨论】:

\[\] 仅在 bash 中各种 PS? 变量的值内被解释(并且有用)。在其他情况下,您负责识别和说明打印到终端的不可见字符。 @chepner - 这恰好是我使用它的目的,一个像 hg-prompt 这样的工具,用于轻松自定义 bash 提示符。 那么您只想按字面意思传递这些字符。显示它们并没有什么特别的作用。在计算 PS1 的值的长度时,它是 bash,它的计数中不包括它们之间的任何内容。 @chepner - 谢谢!这解决了我的问题。我之前尝试过这个,但是在终端中测试了脚本并看到了\[,并认为它不起作用。但是当我在我的 $PS1 中使用该脚本时,效果很好。 【参考方案1】:

在 Bash 提示与 Python 中:

\[ == '\001' \] == '\002'

source

【讨论】:

【参考方案2】:

基于@chepner 的评论 - 我的问题涉及修改终端中的PS1 变量以获得彩色提示。

直接从 python 打印 \[\] 会在屏幕上显示这些字符,但是当传递给 PS1 时,这些字符是不可见的,并且彩色文本正确显示并正确包裹在屏幕上。

【讨论】:

【参考方案3】:

请勿在颜色代码周围使用 [ ]。 只需创建如下变量。

red = '\033[31m'
print red 

【讨论】:

以上是关于如何从 python 打印 \[ 和 \] 到终端?的主要内容,如果未能解决你的问题,请参考以下文章

我如何使用python将终端输出到网格中的tkinter框架?

构建简单的终端 pyqt4 和 pyserial 如何更新文本浏览器

在python终端中打印颜色[重复]

Python从入门到进阶3运行python代码

Python从入门到进阶3运行python代码

如何通过按下连接到 piface 数字 2 上的终端的按钮来打印“Python 中的 Hello world”