【问题标题】:Python - Splitting up a string into a list of paired chars [duplicate]Python - 将字符串拆分为成对字符列表[重复]
【发布时间】:2012-10-23 13:04:34
【问题描述】:

可能重复:
How do you split a list into evenly sized chunks in Python?
Split string by count of characters

我有一个字符串(十六进制),类似于:

717765717777716571a7202020

我需要把它变成格式:

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

我不确定最好的方法是什么

【问题讨论】:

  • 可以像访问普通列表一样访问字符串,因此该问题的所有答案也将回答这个问题。

标签: python string list hex


【解决方案1】:
>>> 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'

【讨论】:

    【解决方案2】:

    另一种方式。

    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
    

    【讨论】:

    • 您需要使用相同的iter(s)。例如si = iter(s); ... zip(si,si) -- 这会给你0x77,0x11,0x77 ...
    • @mgilson:对……已修复。
    猜你喜欢
    • 1970-01-01
    • 2018-04-22
    • 1970-01-01
    • 2012-03-31
    • 2014-05-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多