首页 > 解决方案 > 如何以 0x 为前缀并用 python 中的数字列表分隔

问题描述

我有一个数字列表如下

18 8E 08 83 78 0F ED 63 A4 70 13 AB 78 6C 12 84 86 7F 40 BE 58 E6​

如何0x在所有数字前面附加并用逗号(,)分隔,这样我就可以得到

0x18, 0x8E, 0x08, 0x83 ,....

标签: pythonpython-3.xpython-2.7

解决方案


选项 1
使用splitjoin与列表推导

s = '18 8E 08 83 78 0F ED 63 A4 70 13 AB 78 6C 12 84 86 7F 40 BE 58 E6'
s = ', '.join(['0x{}'.format(i) for i in s.split()])

# Result

'0x18, 0x8E, 0x08, 0x83, 0x78, 0x0F, 0xED, 0x63, 0xA4, 0x70, 0x13, 0xAB, 0x78, 0x6C, 0x12, 0x84, 0x86, 0x7F, 0x40, 0xBE, 0x58, 0xE6'

选项 2
使用splitandjoinwithmap

', '.join(map('0x{}'.format, s.split()))

# Result
'0x18, 0x8E, 0x08, 0x83, 0x78, 0x0F, 0xED, 0x63, 0xA4, 0x70, 0x13, 0xAB, 0x78, 0x6C, 0x12, 0x84, 0x86, 0x7F, 0x40, 0xBE, 0x58, 0xE6'

选项 3
re.sub

re.sub(r'(\w+)', r'0x\1,', s)[:-1]

# Result
'0x18, 0x8E, 0x08, 0x83, 0x78, 0x0F, 0xED, 0x63, 0xA4, 0x70, 0x13, 0xAB, 0x78, 0x6C, 0x12, 0x84, 0x86, 0x7F, 0x40, 0xBE, 0x58, 0xE6'

推荐阅读