Python转义序列和字符串操作

时间:2012-08-01 20:54:44

标签: python string escaping sequence backslash

我有以下两个变种:

a = chr(92) + 'x11'
b = '\x11'
print 'a is: ' + a
print 'b is: ' + b

这些打印状态的结果:

a is: \x11
b is: <|        # Here I am just showing a representation of the symbol that is printed for b

如何使变量a使用chr(92)调用打印与var b相同的内容?提前谢谢。

3 个答案:

答案 0 :(得分:3)

其他答案向您展示如何让b为您提供a中的内容。如果您希望a为您提供b中的内容(这就是您所要求的,如果我能正确读到您),则需要解码转义序列:

>>> a
u'\\x11'
>>> a.decode('string-escape')
'\x11'

如果您想要一个unicode字符串,也可以使用unicode-escape代替string-escape

答案 1 :(得分:2)

查看string literals的文档。

反斜杠是Python字符串中的转义字符,因此要在字符串中包含文字反斜杠,您需要使用两个连续的反斜杠来转义它们。或者,您可以通过使用原始字符串文字来抑制反斜杠的转义行为,这可以通过在字符串前加r来完成。例如:

  • 转义反斜杠:

    b = '\\x11'
    
  • 使用原始字符串文字:

    b = r'\x11'
    

如果我误解了您的问题且b应该是'\x11'或等效chr(17),但您只是希望它以转义格式显示,则可以使用repr()为此:

>>> b = '\x11'
>>> print 'b is: ' + repr(b)
b is: '\x11'

如果您不想使用引号,请使用string_escape encoding

>>> print 'b is: ' + b.encode('string_escape')
b is: \x11

或者要让ab相同,您可以使用a.decode('string_escape')

答案 2 :(得分:0)

\x11似乎是ASCII中^Q控制字符的十六进制值:

\021  17  DC1  \x11  ^Q    (Device control 1) (XON) (Default UNIX    START char.)

您需要转义\以获取文字\x11