首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >python中字符串的打印长度

python中字符串的打印长度
EN

Stack Overflow用户
提问于 2013-02-15 14:34:54
回答 1查看 12.6K关注 0票数 9

有没有办法在python中找到(甚至是最好的猜测)字符串的“打印”长度?例如,'potaa\bto‘在len中是8个字符,但在tty上只打印了6个字符。

预期用法:

代码语言:javascript
复制
s = 'potato\x1b[01;32mpotato\x1b[0;0mpotato'
len(s)   # 32
plen(s)  # 18
EN

回答 1

Stack Overflow用户

发布于 2013-02-15 14:47:13

至少对于ANSI TTY转义序列,这是有效的:

代码语言:javascript
复制
import re
strip_ANSI_pat = re.compile(r"""
    \x1b     # literal ESC
    \[       # literal [
    [;\d]*   # zero or more digits or semicolons
    [A-Za-z] # a letter
    """, re.VERBOSE).sub

def strip_ANSI(s):
    return strip_ANSI_pat("", s)

s = 'potato\x1b[01;32mpotato\x1b[0;0mpotato'

print s, len(s)
s1=strip_ANSI(s)
print s1, len(s1)

打印:

代码语言:javascript
复制
potato[01;32mpotato[0;0mpotato 32
potatopotatopotato 18

对于退格符\b或垂直制表符或\r vs \n --这取决于打印的方式和位置,不是吗?

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14889454

复制
相关文章

相似问题

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