在lis中按一定间隔插入一个字符

2024-09-20 22:21:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将10000000C9ABCDEF转换为10:00:00:00:c9:ab:cd:ef

这是必需的,因为当我登录到存储阵列时,10000000C9ABCDEF格式是我看到HBA或主机总线适配器的方式。但是SAN交换机理解10:00:00:00:c9:ab:cd:ef符号。在

我只能做到以下几点:

#script to convert WWNs to lowercase and add the :.
def wwn_convert():
    while True:
        wwn = (input('Enter the WWN or q to quit- '))
        list_wwn = list(wwn)
        list_wwn = [x.lower() for x in list_wwn]
        lower_wwn = ''.join(list_wwn)
        print(lower_wwn)
    if wwn == 'q':
        break

wwn_convert()

我尝试了':'.join,但是这会在每个字符之后插入:,所以我得到1:0:0:0:0:0:0:0:c:9:a:b:c:d:e:f

我希望.join经过一个循环,在这个循环中我可以说for i in range (0, 15, 2)这样它就可以在两个字符之后插入:,但不太确定该怎么做。(很好,Python让我以2步或任何我想要的数字循环)

另外,如果有人能给我指点,让我写得更好,我会很感激。。。在

请帮忙。在

我在Windows7上使用Python3.2.2版(64位)


Tags: thetoinconvertforabcd字符
3条回答
>>> s='10000000C9ABCDEF'
>>> si=iter(s)
>>> ':'.join(c.lower()+next(si).lower() for c in si)
>>> '10:00:00:00:c9:ab:cd:ef'

以lambda形式:

^{pr2}$
>>> s = '10000000C9ABCDEF'
>>> ':'.join([s[x:x+2] for x in range(0, len(s)-1, 2)])
'10:00:00:00:C9:AB:CD:EF'

说明:

':'.join(...)返回在iterable的各个部分之间插入“:”的新字符串

s[x:x+2]从s返回长度为2的子字符串,从x开始

range(0, len(s) - 1, 2)返回步长为2的整数列表

因此,列表理解将字符串s拆分为长度为2的子字符串,然后join将它们放回一起,但在它们之间插入“:”。在

还有一个选择:

>>> s = '10000000c9abcdef'
>>> ':'.join(a + b for a, b in zip(*[iter(s)]*2))
'10:00:00:00:c9:ab:cd:ef'

或者更简洁:

^{pr2}$

相关问题 更多 >

    热门问题