<p>我正在尝试将<code>10000000C9ABCDEF</code>转换为<code>10:00:00:00:c9:ab:cd:ef</code></p>
<p>这是必需的,因为当我登录到存储阵列时,<code>10000000C9ABCDEF</code>格式是我看到HBA或主机总线适配器的方式。但是SAN交换机理解<code>10:00:00:00:c9:ab:cd:ef</code>符号。在</p>
<p>我只能做到以下几点:</p>
<pre><code>#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()
</code></pre>
<p>我尝试了<code>':'.join</code>,但是这会在每个字符之后插入<code>:</code>,所以我得到<code>1:0:0:0:0:0:0:0:c:9:a:b:c:d:e:f</code></p>
<p>我希望<code>.join</code>经过一个循环,在这个循环中我可以说<code>for i in range (0, 15, 2)</code>这样它就可以在两个字符之后插入<code>:</code>,但不太确定该怎么做。(很好,Python让我以2步或任何我想要的数字循环)</p>
<p>另外,如果有人能给我指点,让我写得更好,我会很感激。。。在</p>
<p>请帮忙。在</p>
<p>我在Windows7上使用Python3.2.2版(64位)</p>
<pre><code>>>> s='10000000C9ABCDEF'
>>> si=iter(s)
>>> ':'.join(c.lower()+next(si).lower() for c in si)
>>> '10:00:00:00:c9:ab:cd:ef'
</code></pre>
<p>以lambda形式:</p>
^{pr2}$