今天,我正在学习内置函数chr
。通过ascii-table搜索,我发现\x08
表示退格。所以我玩了一下。但结果让我困惑:
In [52]: print '1\x08'
1
In [53]: print '1\x082'
2
似乎只有另一个字符后跟\x08
才会像退格一样,为什么会这样? \x08
在字符串中的表现如何?
答案 0 :(得分:1)
在两种情况下它都像退格一样,也就是说它将光标向后移动一个空格。但是,除非你写别的东西,否则它不会删除那里的东西。所以在第一种情况下,1仍然存在,但在第二种情况下,它被2覆盖。
答案 1 :(得分:1)
Backspace只将光标移动一个字符,实际上并不删除它。例如,结果为193:
print('123\x08\x089')
您可以使用空格来实际“删除”角色......
答案 2 :(得分:1)
1 ---- backspace
只需将光标移动到左侧的一个空格即可
如果你使用工作或其他编辑器,它也将删除左边的一个字符。
您必须知道的是backspace
也是与1
或a
相同的字符。
2 ----终端作为我们的默认输出设备,你也可以将他作为文件。
所以如果你使用
print '1\x08'
这意味着您在文件标准输出中写了1
和backspace
。
如果您阅读该文件,系统会显示1 + breakspace
,您将获得1
。
如果您使用
print '1\x082'
这意味着您在文件标准输出中写了1
,backspace
和2
。
如果您阅读该文件,系统会获得1 + breakspace + 2
,当您打印它们时,您只会获得2
,因为它会在您使用退格时覆盖第一个1
。 / p>
有关详细信息,您可以看到下一个测试代码
if __name__ == "__main__":
print "1\x08"
print "1\x082"
f = open("1.txt", "w")
f.write("1\x08\x082")
f.close();
f = open("1.txt", "r")
str = f.readlines( )
print len(str), str
for s in str:
print "s=|" + s + "|"
您可以看到字符串s=|1\x08\x082|
显示s=2|
。因为|1
在backspace
两次时不会显示。