我有一个特殊字符串,如下所示
req_str = 'N\x08NA\x08AM\x08ME'
## If I print it I correctly get the word "NAME"
print(req_str)
>>> print(req_str)
NAME
现在我想从字符串中提取字符串NAME
。
''.join(c for c in 'N\x08NA\x08AM\x08ME' if c.isprintable())
## this produces
'NNAAMME'
我知道这与一些特殊的编码有关。我不是很熟悉字符串编码。我的问题是在这种情况下如何将单词'NAME'提取为字符串?
1条答案
按热度按时间58wvjzkj1#
根据ASCII表,
\x08
用于退格字符。它也可以由\b
生成:输出:
基本上,它写入一个
N
,然后应用退格,然后写入另一个N
。这就是为什么你在最终输出中看到一个N
。A
,M
和E
也是如此。要提取
NAME
,您可以执行终端对它所做的操作:(感谢@DarkKnight)
其他信息:如果您想知道这是什么根源:在过去,打印机/打字机使用这种技术将一个字符打两次,使其成为粗体。它被称为overstriking or overtyping