这代表什么?
‘\r’是什么意思?它有什么作用?我以前从没见过这个,搞得我很头疼。它似乎没有什么用,因为‘a\ra’打印出来是‘aa’,但它和字符串‘aa’并不一样。我在用Python 2.6。
4 个回答
这是一个关于回车符的转义字符。在我的Windows控制台上,运行 print 'a\ra'
会得到...
a
a
... 这个结果会被打印到标准输出。
下面是一个所有有效转义字符的列表。
\newline
- 被忽略\\
- 反斜杠 (\)\'
- 单引号 (')\"
- 双引号 (")\a
- ASCII 响铃 (BEL)\b
- ASCII 退格 (BS)\f
- ASCII 换页 (FF)\n
- ASCII 换行 (LF)\N{name}
- Unicode 数据库中名为 name 的字符(仅限 Unicode)\r
- ASCII 回车 (CR)\t
- ASCII 水平制表符 (TAB)\uxxxx
- 具有 16 位十六进制值 xxxx 的字符(仅限 Unicode)\Uxxxxxxxx
- 具有 32 位十六进制值 xxxxxxxx 的字符(仅限 Unicode)\v
- ASCII 垂直制表符 (VT)\ooo
- 具有八进制值 ooo 的字符\xhh
- 具有十六进制值 hh 的字符
对我来说(在 Mac OS X 10.5 的 Terminal.App 上,使用 Python 2.6.5):
>>> print 'a\ra'
a
或者给个更好的例子:
>>> print 'longstring\rshort'
shorttring
换句话说,\r
是“把光标移回到行的开头”(而不是换行),这样 'short'
就可以“覆盖” 'longstring'
的开头部分。
这个效果很适合在长时间操作中向用户展示一个单行的“当前状态”更新——可以用 print '\rupdate',
,后面加个逗号来避免换行,这样就能通过覆盖之前的内容来更新状态。当然,你需要确保每次更新的字符串长度至少和之前的一样(可以通过加空格来轻松实现)。
需要注意的是,其他回答者在他们的平台上观察到了不同的视觉效果(你自己也可能见过 \r
没有效果的情况,这在我看来是前所未有的),所以这种提供更新的好方法并不一定在每个平台上都能很好地工作!-)
这是一个来自打字机的老旧控制字符。它的意思是“回车”。在那个时候,当你按下“回车”键时,光标会移动到下一行,然后打字机的纸张会回到行的开头(所以叫回车)。
后来随着电脑的发展,不同的操作系统选择了不同的方式来表示换行。在Windows系统中,换行是用“\r\n”(回车加换行)来表示的。在类Unix系统中,只有“\n”(换行),不需要回车,因为换行本身就隐含了回车的意思。在旧版的Mac OS中,只有“\r”。
现在,这个字符除了用来表示换行,似乎没有其他的用途了。