2017-03-07 48 views
-2

这里有一个简单的例子:为什么Python跳过字符串连接语句中的第一个元素?

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的0×01

+4

加入写入'” 0x'' **元件之间**。 –

+2

尝试'print(''.join('0x {:02x}'.format(x)for example))' –

+0

就是这样!谢谢@ Jean-FrançoisFabre!!!如果你做出答案,我会标记它 –

回答

0

正如你可以在documentation of str.join阅读:

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

所以' 0x'分离是放在琴弦之间。但是,您可以轻松地解决这个问题:

print ' '.join('0x{:02x}'.format(x) for x in exampleArray)
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 
相关问题