代码之家  ›  专栏  ›  技术社区  ›  emile

python字符串。格式和无效转义

  •  3
  • emile  · 技术社区  · 7 年前

    我试图用一些 \x python内部。

    当我使用:

    print '\x00\x00\xFF\x00'
    

    效果很好,可以打印 � . 但是当我尝试格式化字符串时:

    print '\x{}\x{}\x{}\x{}'.format('00','00','FF','00')
    

    我发现这个错误:

    ValueError: invalid \x escape
    

    当我像这样避开反斜杠时的问题是:

    print '\\x{}\\x{}\\x{}\\x{}'.format('00','00','FF','00')
    

    它打印:

    \x00\x00\xFF\x00
    

    而不是一点点 � 比如非格式化字符串。

    chr bytearray 看起来很有趣,例如:

    print chr(0x00),chr(0x00),chr(0xFF),chr(0x00) print bytearray([0x00, 0x00, 0xFF, 0x00])

    打印 � ,但当我尝试格式化它们时,会得到一个语法错误。

    我发现了一些有趣的帖子,比如:

    但我还是被困住了。。。

    如何打印带格式的字符串 \x 在…内

    (我正在使用python 2.7,但我可以使用其他版本。)

    非常感谢。

    1 回复  |  直到 7 年前
        1
  •  1
  •   snakecharmerb    7 年前

    目标是创建一个格式字符串,该字符串将打印字符,给定对应于unicode代码点的十六进制值的字符串表示形式,因此如下所示

    for var1 in 'FF','00','38': 
        print '\x{}\x{}\x{}\x{}'.format(var1,'00','FF','00')
    

    将输出

    �� � 8�

    int 内置函数,然后使用 c 字符串格式代码,用于将整数值转换为相应的unicode字符。

    for v in ('ff', '00', '38'):
        print '{:c}{:c}{:c}{:c}'.format(*[int(x, 16) for x in [v, '00', 'ff', '00']])
    
    �� 
    � 
    8�
    

    docs :

    c :字符。打印前将整数转换为相应的unicode字符。