今天,我正在学习内置函数chr
。并且通过 ascii-table 搜索,我发现\x08
意味着退格。所以我玩了一下。但结果让我很困惑:
In [52]: print '1\x08'
1
In [53]: print '1\x082'
2
似乎只有跟随另一个字符,\x08
才会像退格一样,为什么会发生这种情况?\x08
在字符串中表现如何?
今天,我正在学习内置函数chr
。并且通过 ascii-table 搜索,我发现\x08
意味着退格。所以我玩了一下。但结果让我很困惑:
In [52]: print '1\x08'
1
In [53]: print '1\x082'
2
似乎只有跟随另一个字符,\x08
才会像退格一样,为什么会发生这种情况?\x08
在字符串中表现如何?
在这两种情况下,它的行为都像退格键,也就是说它将光标向后移动一个空格。但是,它不会删除那里的内容,除非您编写其他内容。所以在第一种情况下,1 仍然存在,但在第二种情况下,它被 2 覆盖。
1---- backspace
只需将光标左移一个空格,如果您使用作品或其他编辑器,它也会删除左一个字符。你必须知道的是,它也是一个与orbackspace
相同的字符。1
a
2----终端作为我们默认的输出设备,你也可以把他当成文件。
所以如果你使用
print '1\x08'
这意味着您在文件 stdout 中写入 a1
和 a 。backspace
如果你读取文件,系统读取1 + breakspace
,你会得到一个1
.
如果你使用
print '1\x082'
这意味着您在文件 stdout 中写入 a 1
、 abackspace
和 a 。2
如果你读取文件,系统会得到1 + breakspace + 2
,当你打印它们时,你只会得到一个2
,因为它1
在你使用退格时覆盖了第一个。
有关详细信息,您可以查看下一个测试代码
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
Backspace 仅将光标移动一个字符,实际上并没有删除它。例如,这会导致 193:
print('123\x08\x089')
您可以使用空格来实际“删除”角色......