可能重复:
How do you split a list into evenly sized chunks in Python?
What is the most “pythonic” way to iterate over a list in chunks?
说我有一个字符串
s = '1234567890ABCDEF'
如何将此字符串切片(或者可能拆分为正确的术语?)此字符串组成一个包含每个包含2个字符的字符串的列表?
desired_result = ['12', '34', '56', '78', '90', 'AB', 'CD', 'EF']
不确定这是否相关,但我正在解析一个十六进制字符串,我需要的最终结果是一个字节列表,从上面的列表中创建(例如,使用int(desired_result[i], 16)
)< / p>
答案 0 :(得分:6)
3>> bytes.fromhex('1234567890ABCDEF')
b'\x124Vx\x90\xab\xcd\xef'
答案 1 :(得分:3)
您可以使用binascii
:
>>> from binascii import unhexlify
>>> unhexlify(s)
'\x124Vx\x90\xab\xcd\xef'
然后:
>>> list(_)
['\x12', '4', 'V', 'x', '\x90', '\xab', '\xcd', '\xef']
答案 2 :(得分:3)
>>> s = '1234567890ABCDEF'
>>> iter_s = iter(s)
>>> [a + next(iter_s) for a in iter_s]
['12', '34', '56', '78', '90', 'AB', 'CD', 'EF']
>>>
答案 3 :(得分:0)
>>> s = '1234567890ABCDEF'
>>> [char0+char1 for (char0, char1) in zip(s[::2], s[1::2])]
['12', '34', '56', '78', '90', 'AB', 'CD', 'EF']
但是,正如其他人所指出的,对于将十六进制数转换为字节这一更普遍的问题,有更直接的解决方案。 另请注意,Robert Kings的解决方案通常更有效,因为它基本上具有零内存占用(以不太清晰的代码为代价)。