首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使字符串适合终端宽度,但要考虑TAB等宽字符

使字符串适合终端宽度,但要考虑TAB等宽字符
EN

Stack Overflow用户
提问于 2016-03-21 19:34:08
回答 1查看 87关注 0票数 0

你知道如何将字符串修剪到特定的长度(即终端宽度),但要考虑到像制表符这样的特殊“宽”字符吗?

我有以下几行代码,line是一个字节字符串,max_width的值是132:

代码语言:javascript
复制
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]))

输出示例如下:

代码语言:javascript
复制
    23: ��G&S��.��+��HL=`����W9�yi��l�����p����:��d*p��i�6L�h<��
v�I��S�� �u�`:%��#                                               ��/����TAE����{�(y�Ij��B����33o3
132

根据wc的说法,Python3认为它只有132个字符,但终端(Ubuntu15.10上的gnome-terminal)将其解释为293个字符。

我如何才能正确地截断这条线,使其适合一个端子行?

EN

回答 1

Stack Overflow用户

发布于 2016-03-21 20:28:20

我现在确实重新构造了每个字符串,并简单地省略了所有不可打印的字符。

这可能不是最快的方法,但它是有效的。

代码语言:javascript
复制
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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36129959

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档