2017-03-07 84 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 
相關問題