通过插入'字符串格式:'

时间:2014-05-26 09:19:52

标签: python string python-2.7

我有一个字符串' 0000000000000201'在python中

dpid_string = '0000000000000201'

将此转换为以下字符串的最佳方法是

00:00:00:00:00:00:02:01

4 个答案:

答案 0 :(得分:4)

您将字符串分区为大小为2的块,并将其与str.join()连接:

':'.join([dpid_string[i:i + 2] for i in range(0, len(dpid_string), 2)])

演示:

>>> dpid_string = '0000000000000201'
>>> ':'.join([dpid_string[i:i + 2] for i in range(0, len(dpid_string), 2)])
'00:00:00:00:00:00:02:01'

答案 1 :(得分:4)

seq = '0000000000000201'
length = 2
":".join([seq[i:i+length] for i in range(0, len(seq), length)])

答案 2 :(得分:1)

虽然不是很简单,但你可以做到

dpid_string = '0000000000000201'
''.join([':' + char if not i % 2 else char for i, char in enumerate(dpid_string)])[1:]

从列表理解中分解:

  1. [char for char in dpid_string]只是循环遍历字符并将其作为列表返回。
  2. 我们希望它返回一个字符串,因此我们使用''.join(list)加入完整列表。
  3. 现在我们希望它对角色的位置做出反应,所以我们想要评估索引。因此,我们使用i, value in enumerate(list)
  4. 如果此索引为偶数,请在char之前添加冒号(模数2为False)。
  5. 现在我们在索引0处留下一个冒号,我们通过索引[1:]
  6. 删除它

答案 3 :(得分:1)

使用re.sub的替代方案:

import re

dpid_string = '0000000000000201'
subbed = re.sub('(..)(?!$)', r'\1:', dpid_string)
# 00:00:00:00:00:00:02:01

读取每2个不在字符串末尾的字符,并将其替换为后面跟:的两个字符。