我有这个字符串:
pass__ = 'HSSSTS00008\4Tech'
但是,打印此内容会返回以下格式:
'HSSSTS00008\x04Tech'
因此,我想删除特殊字符x
,并在打印后与pass__
具有相同的值,因为这是对身份验证层的验证。
答案 0 :(得分:2)
您可以使用原始字符串,并且请勿将pass用作python关键字。
password = r'HSSSTS00008\4Tech'
现在可以打印
'HSSSTS00008\\4Tech'
答案 1 :(得分:2)
字符串中的单个字符不是您认为的那样。请参见下面的示例字符串:
"ab\nc" -> "a", "b", "\n", "c"
类似地
"HSSSTS00008\4Tech" -> "H", "S", "S", ..., "0", "8", "\x04", "T", ...
如果您尝试使用文字反斜杠后跟文字4,则应使用“原始字符串”
r"HSSSTS00008\4Tech" -> "H", "S", "S", ... "0", "8", "\", "4", ...
答案 2 :(得分:0)
(至少)有两种不同的方式来实现所需的目标,或者使用原始字符串(如其他答案所述):
pass__ = r'HSSSTS00008\4Tech'
,或者可以使用转义序列'\\'
在普通字符串中编写它:
pass__ = 'HSSSTS00008\\4Tech'
这两个都将生成相同的字符串。查看字符串表示形式时,即,只要在解释器中写入变量名称或打印.__repr__()
表示形式,您会看到什么:
>>> pass__
'HSSSTS00008\\4Tech'
>>> print(pass__.__repr__())
'HSSSTS00008\\4Tech'
因此,字符串的程序表示形式带有双反斜杠\\
。但是在打印字符串时,您将得到一个斜线:
>>> print(pass__)
HSSSTS00008\4Tech
这样做的原因是,单个反斜杠用作转义字符以允许表示例如不可打印的字符为''\ n'`(换行)。
还可以使用转义序列生成任何unicode字符,该字符只是一个反斜杠,后跟描述代码点的数字。因此,'\4'
将被解释为代码点4。当显示表示形式时,它以十六进制完成,这意味着它将表示为'\x04'
。