By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
439,986 Members | 1,583 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 439,986 IT Pros & Developers. It's quick & easy.

putting a string in Mac Address form

P: n/a
I came up with this. Is there a better (more pythonic) way to do it?

import string
def mac_to_norm(mac):
def bad_char(char):
if char not in string.hexdigits:
return False
return True
mac = filter(bad_char,mac)
if len(mac) is not 12: return None
new_mac = ''
c = 0
while len(new_mac) < 16:
new_mac += mac[c:c+2] + ':'
c=c+2
return new_mac[:-1].upper()
print mac_to_norm('0012.ab23.b2cd')
#shows: 00:12:AB:23:B2:CD

The part I think is bad is the while loop part. Could it be better?

Oct 31 '05 #1
Share this Question
Share on Google+
1 Reply


P: n/a
kyle.tk <ky*****@gmail.com> wrote:
...
new_mac = ''
c = 0
while len(new_mac) < 16:
new_mac += mac[c:c+2] + ':'
c=c+2
return new_mac[:-1].upper() ... The part I think is bad is the while loop part. Could it be better?


What about replacing this whole block with, say...:

return ':'.join(mac[c:c+2] for c in range(0, 12, 2)).upper()

(as you did already check that len(mac) is 12...)
Alex
Oct 31 '05 #2

This discussion thread is closed

Replies have been disabled for this discussion.