manipulacia retazca v Pythone

C,C++,C#

Moderátori: psichac, Moderátori

OM0XA
Stály člen
Stály člen
Príspevky: 235
Dátum registrácie: 03 Okt 2012, 23:18
Bydlisko: Poprad

manipulacia retazca v Pythone

Príspevok od používateľa OM0XA » 12 Júl 2017, 15:21

sekcia pre Python nie je, tak to davam do tejto. Riesim takyto problem. Z UDP paketov vycitavam MAC adresy istych zariadeni v LANke. Mam ich v liste DATA v tvare [ '112233445566' , '223344556677' ].
Potrebujem ich vypisat v tvare 11:22:33:44:55:66
LTRXnode je list IP adries.

Robim to takto:

Kód: Vybrať všetko

for idx, node in enumerate(LTRXnode):
	mac=map(''.join, zip(*[ iter(DATA[idx]) ]*2))
	print "%s\t\t%s" % (node, ":".join("%s" % c for c in mac))
Ma niekto nejake jednoduchsie riesenie? Nie som v Pythone az taky zbehly. Dik
0

Používateľov profilový obrázok
vosa
Stály člen
Stály člen
Príspevky: 103
Dátum registrácie: 24 Okt 2012, 09:34
Bydlisko: Bratislava

Re: manipulacia retazca v Pythone

Príspevok od používateľa vosa » 12 Júl 2017, 17:22

Stringy su tiez iterable.

Kód: Vybrať všetko

>>> a = '112233445566'
>>> ':'.join([a[i:i+2] for i in range(0,12,2)])
'11:22:33:44:55:66'
Takze takto?

Kód: Vybrať všetko

for idx, node in enumerate(LTRXnode):
    print "%s\t\t%s" % (node, ':'.join([DATA[idx][i:i+2] for i in range(0,12,2)]))
0

OM0XA
Stály člen
Stály člen
Príspevky: 235
Dátum registrácie: 03 Okt 2012, 23:18
Bydlisko: Poprad

Re: manipulacia retazca v Pythone

Príspevok od používateľa OM0XA » 13 Júl 2017, 08:36

Dakujem, je to ovela jednoduchsie. Akurat som to kozmeticky upravil, kedze nemam rad v kode o nicom hovoriace ciselne konstanty :-)

Kód: Vybrať všetko

for idx, node in enumerate(LTRXnode):
    print "%s\t\t%s" % (node, ':'.join([DATA[idx][i:i+2] for i in range(0,len(DATA[idx]),2)]))
0

Napísať odpoveď