2012-11-02 59 views
0
列表

可能重复:
How do you split a list into evenly sized chunks in Python?
Split string by count of charactersPython的 - 分裂字符串转换成成对字符

我有一个字串(十六进制),这样的:

717765717777716571a7202020 

我需要把它变成格式:

0x71,0x77,0x65,0x71,0x77,0x77... 

我不知道最好的方法是什么,虽然

+3

字符串可以被访问,就像一个正常的列表中,因此所有对这个问题的答案会回答这一个了。 –

回答

5
>>> s = '717765717777716571a7202020' 
>>> ['0x' + s[i:i+2] for i in range(0, len(s), 2)] 
['0x71', '0x77', '0x65', '0x71', '0x77', '0x77', '0x71', '0x65', '0x71', '0xa7', '0x20', '0x20', '0x20'] 

如果你想有一个逗号分隔的字符串作为结果,你可以使用以下命令:

>>> ','.join('0x' + s[i:i+2] for i in range(0, len(s), 2)) 
'0x71,0x77,0x65,0x71,0x77,0x77,0x71,0x65,0x71,0xa7,0x20,0x20,0x20' 
0

另一种方法。

s = '717765717777716571a7202020' 

print ','.join('0x'+''.join(d) for d in zip(*[iter(s)]*2)) 

输出:

0x71,0x77,0x65,0x71,0x77,0x77,0x71,0x65,0x71,0xa7,0x20,0x20,0x20 
+0

您需要使用相同的'iter(s)'。例如'si = iter(s); ... zip(si,si)' - 这会给你'0x77,0x11,0x77 ...' – mgilson

+0

@mgilson:正确...固定。 – martineau