您是否知道如何将字符串剪裁到特定长度(即终端宽度),但是考虑使用特殊的“宽”字符(如标签)?
我有这些行,line
是一个字节字符串,max_width
被评估为132:
max_width = shutil.get_terminal_size().columns
output = "{:>6d}: {}".format(n, line.decode(codec, "replace")).rstrip("\n")
print(output[:max_width])
print(len(output[:max_width]))
示例输出将是:
23: ��G&S��.��+��HL=`����W9�yi��l�����p����:��d*p��i�6L�h<��
v�I��S�� �u�`:%��# ��/����TAE����{�(y�Ij��B����33o3
132
所以Python3认为它只有132个字符,但根据gnome-terminal
,终端(Ubuntu 15.10上的wc
)将其解释为293个字符。
如何正确截断线,使其适合一个终端行?
答案 0 :(得分:0)
我现在重新构造每个字符串,只是省略所有不可打印的字符 这可能不是最快的方法,但它有效。
output = line.decode(codec, "replace")
if max_width:
output = "".join(c for c in output if c.isprintable())
print(output[:max_width])
else:
print(output)