正确格式化字符串

时间:2018-11-08 07:31:07

标签: python regex

我有这个字符串:

pass__ = 'HSSSTS00008\4Tech'

但是,打印此内容会返回以下格式:

'HSSSTS00008\x04Tech'

因此,我想删除特殊字符x,并在打印后与pass__具有相同的值,因为这是对身份验证层的验证。

3 个答案:

答案 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'