как префикс с 0x и разделить, список чисел в Python - PullRequest
0 голосов
/ 22 мая 2018

У меня есть список чисел следующим образом

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 ,....

Ответы [ 2 ]

0 голосов
/ 22 мая 2018

Если у вас есть числа в виде строки, вам сначала нужно составить их список следующим образом:

nums = “11 A4 5B DD”
nums_lst = nums.split()

Затем вы просто применяете функцию, чтобы добавить начало строки к каждому числу:

nums_lst = map(lambda a: “0x” + a, nums_list)

И присоедините список обратно к строке:

nums = “, “.join(nums_lst)

Всего:

nums = “, “.join(map(lambda x: “0x” + x, nums.split())
0 голосов
/ 22 мая 2018

Опция 1
Использование split и join с пониманием списка

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
Использование split и join с map

', '.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'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...