为什么Python跳过字符串连接语句中的第一个元素?

时间:2017-03-07 19:49:47

标签: python string join

这是一个简单的例子:

In [155]: exampleArray = bytearray([0xc0, 0xff, 0x01])
In [156]: exampleArray
Out[156]: bytearray(b'\xc0\xff\x01')
In [157]: print ' 0x'.join('{:02x}'.format(x) for x in exampleArray)
c0 0xff 0x01

但我想要的是 0xc0 0xff 0x01

2 个答案:

答案 0 :(得分:2)

str.join()仅将连接符置于连接的元素之间。来自str.join() documentation

  

元素之间的分隔符是提供此方法的字符串。

大胆强调我的)。

加入空格,并更改格式以包含0x前缀:

' '.join('{:#04x}'.format(x) for x in exampleArray)

#更改格式以包含0x前缀;请注意您需要调整字段宽度以考虑额外的2个字符(每个字段现在占用4个字符,包括0x前缀)。

演示:

>>> exampleArray = bytearray([0xc0, 0xff, 0x01])
>>> print ' '.join('{:#04x}'.format(x) for x in exampleArray)
0xc0 0xff 0x01

答案 1 :(得分:1)

您可以阅读documentation of str.join

  

返回一个字符串,该字符串是可迭代迭代中字符串的串联。如果在iterable中有任何非字符串值,则会引发TypeError,包括bytes对象。元素之间的分隔符是提供此方法的字符串。

因此' 0x'是一个分隔符放在字符串之间。但是,您可以通过以下方式轻松解决此问题:

print ' '.join('0x{:02x}'.format(x) for x in exampleArray)