如何从 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框架?