在Python中,"\00"是什么?

6
在Python中,"\00"是一个空字符。为了更好地了解这个问题,我尝试了以下两件事情: 1. 当我把它赋值给字符串变量d,然后调用print d时,屏幕上没有任何输出。 2. 我还尝试将d分配给一个带有额外间距的字符串,并在末尾调用d.replace("\00", ""),但结果并没有显示出来。 d.replace("\00","")的作用是查找特定的字符串"\00"并将其替换为空字符串。
2个回答

21
在Python 2中,如果一个数字以前导零开头,那么它表示的是八进制(base 8)数字。在Python 3中,八进制数字使用0o前缀。具体来说,00表示的是0。 在\00中,前导的\表示指定一个字节值,即0-255之间的数字。通常用于表示键盘上没有的字符,或者字符串中难以直接表示的字符。一些特殊字符还有非数字的“转义码”,例如\n表示换行符。 零字节也称为空字节或null字节。当打印时不显示任何内容--它是null。 ASCII字符代码请查看http://www.ascii.cl/。 是的,replace仍然适用于它,只是作为一个显示字符它没有任何意义。 它有时会用于其他目的,请参见http://en.wikipedia.org/wiki/Null_character

那么 replace 会做什么呢?它只是将 "\00" 视为普通字符串,然后用 "" 替换它吗? - Pankaj Upadhyay
1
是的,它会用您指定的任何字符串替换零字节,就像您替换'a'、' '(空格)或'\t'(制表符)一样。 - agf
2
请注意,'\0'实际上是八进制而不是十进制。对于空值来说没有任何区别,但是一旦您开始将其用于任何大于7的字符,它将产生很大的差异。 - Duncan
@Duncan 是正确的 - \0 是八进制,而\x00是十六进制,两者都表示空值。 - agf

12

反斜杠后面跟着一个数字,用于表示该八进制值所对应的字符。因此,你的\00代表ASCII NUL


1
没有所谓的“ASCII NULL”。它是 NULNULL 是 SQL 中 Python 的 None 等效物。 - John Machin
1
@JohnMachin,或者NULL is to NUL的意义就像LINE FEED对LF的缩写一样。 - mins

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,