相关疑难解决方法(0)

Python的`str.format()`,填充字符和ANSI颜色

在Python 2中,我str.format()用来对齐我正在打印的一堆文本列到终端.基本上,它是一个表,但我不打印任何边框或任何东西 - 它只是文本行,对齐到列.

  • 没有颜色摆弄,一切都按预期打印.
  • 如果我print用ANSI颜色代码包装整行(即一个语句),则所有内容都按预期打印.
  • 但是:如果我尝试在一行中使每列成为不同的颜色,则会抛弃对齐.从技术上讲,保持对齐 ; 它是不按需要打印的填充字符(空格); 事实上,填充字符似乎被完全删除.

我既验证了同样的问题coloramaxtermcolor.结果是一样的.因此,我确定这个问题str.format()与在字符串中间不能很好地使用ANSI转义序列有关.

但我不知道该怎么办!:(我真的想知道这个问题是否有任何解决方法.

颜色和对齐是提高可读性的强大工具,可读性是软件可用性的重要组成部分.如果可以在不手动对齐每列文本的情况下完成此操作,对我来说意义重大.

帮助不大?☺

python string terminal ansi-colors

9
推荐指数
2
解决办法
4217
查看次数

Python在字符串格式宽度字段中计算零长度控制字符?

在 Python 3.4.3 中,我尝试使用 string.format() 运算符对某些字段进行宽度对齐,它似乎将零长度控制字符与宽度总数进行了计数。示例代码:

ANSI_RED = "\033[31m"
ANSI_DEFAULT="\033[39m\033[49m"

string1 = "12"
string2 = ANSI_RED+"12"+ANSI_DEFAULT

print("foo{:4s}bar".format(string1))
print("foo{:4s}bar".format(string2))
Run Code Online (Sandbox Code Playgroud)

这将输出:

foo12  bar
foo12bar
Run Code Online (Sandbox Code Playgroud)

(第二个输出的“12”为红色,但我无法在 SO 中重现它)

在第二种情况下,我丢失了字段宽度,我假设是因为 Python 看到字符串中的字符总数大于宽度,尽管大多数字符在符合 ANSI 的终端上导致零长度。

拥有 ANSI 颜色和工作字段宽度的干净方法是什么?

python terminal printf

5
推荐指数
1
解决办法
860
查看次数

python正则表达式转义字符

我们有:

>>> str
'exit\r\ndrwxr-xr-x    2 root     root            0 Jan  1  2000 
\x1b[1;34mbin\x1b[0m\r\ndrwxr-xr-x    3 root     root           
0 Jan  1  2000 \x1b[1;34mlib\x1b[0m\r\ndrwxr-xr-x   10 root     
root            0 Jan  1  1970 \x1b[1;34mlocal\x1b[0m\r\ndrwxr-xr-x    
2 root     root            0 Jan  1  2000 \x1b[1;34msbin\x1b[0m\r\ndrwxr-xr-x    
5 root     root            0 Jan  1  2000 \x1b[1;34mshare\x1b[0m\r\n# exit\r\n'

>>> print str
exit
drwxr-xr-x    2 root     root            0 Jan  1  2000 bin
drwxr-xr-x    3 root     root            0 Jan  1  2000 lib
drwxr-xr-x   10 root     root            0 Jan  1  1970 local
drwxr-xr-x    2 root     root …
Run Code Online (Sandbox Code Playgroud)

python regex ansi-escape

2
推荐指数
1
解决办法
8803
查看次数

标签 统计

python ×3

terminal ×2

ansi-colors ×1

ansi-escape ×1

printf ×1

regex ×1

string ×1