我有一些Python代码会以一种漂亮的列格式自动打印一组数据,包括放入适当的ASCII转义序列来为各种数据着色以便于阅读.
我最终将每一行表示为一个列表,每个项目都是一个空格填充的列,以便每行上的相同列始终具有相同的长度.不幸的是,当我真正去打印时,并非所有列都排成一行.我怀疑这与ASCII转义序列有关 - 因为该len函数似乎没有识别这些:
>>> a = '\x1b[1m0.0\x1b[0m'
>>> len(a)
11
>>> print a
0.0
Run Code Online (Sandbox Code Playgroud)
因此,当每列的长度相同时len,它们在屏幕上打印时的长度实际上并不相同.
有没有办法(除了用正则表达式做一些hackery,我宁愿不这样做)来获取转义字符串并找出打印长度是什么所以我可以适当地填充空间?也许某种方式将其"打印"回字符串并检查其长度?