[Python] Fügen Sie ":" in die MAC-Adresse ein

Ich mache meine eigene Paketerfassung, um das Netzwerk zu studieren. Ich habe den Prozess des Parsens des Ethernet-Frames darin geschrieben. Wenn die vom Socket empfangenen Rohdaten in eine Zeichenfolge konvertiert werden, lautet die MAC-Adresse Es wird ohne das eingefügte Semikolon ":" erfasst.

Ich möchte ein Semikolon einfügen


000c29ecc97a
↓ Ich möchte das tun ↓
00:0c:29:ec:c9:7a

Da es sich um eine Zeichenfolgenliste handelt, sollte ich sie in Unterlisten mit jeweils 2 Zeichen aufteilen und mit ":" verbinden? Als ich es googelte, fand ich zip (\ * [iter (s)] * n) als eine Technik, um es in Unterlisten mit n Zeichen zu unterteilen.

Fügen Sie ein Semikolon mit split und join ein


>>> s = '000c29ecc97a'
>>> zip(*[iter(s)]*2)
>>> [('0', '0'), ('0', 'c'), ('2', '9'), ('e', 'c'), ('c', '9'), ('7', 'a')]
# ":"Verbinden mit!
>>> ':'.join(map(''.join, zip(*[iter(s)]*2)))
'00:0c:29:ec:c9:7a'

':'.join(map(''.join, zip(*[iter(s)]*2)))Aber***Es ist schwer zu lesen***。


 Es ist eine gute Technik, aber unangenehm, weil es schwer zu verstehen ist, ohne es zu wissen.
 Das nächste, was ich mir ausgedacht habe, war, wie ich es durch einen regulären Ausdruck ersetzen kann.


#### **`Fügen Sie ein Semikolon mit regulärem Ausdruck ein`**
```pycon

>>> import re
>>> s = '000c29ecc97a'
>>> raw_mac_ptn = r'([0-9A-F]{2})(?!$)'
>>> mac_addr = re.sub(raw_mac_ptn, r'\1:', s)
>>> mac_addr
'00:0c:29:ec:c9:7a'

Ich frage mich, ob dieser leichter zu sehen ist. Negative Vorausschau (?! $) Ist wichtig, damit am Ende kein ":" eingefügt wird.

Recommended Posts

[Python] Fügen Sie ":" in die MAC-Adresse ein
Hash-Methode (Open-Address-Methode) in Python
[Einführung] Fügen Sie Zeilenumbrüche in Python 3 ein
Quadtree in Python --2
Python in der Optimierung
CURL in Python
Metaprogrammierung mit Python
Python 3.3 mit Anaconda
Geokodierung in Python
SendKeys in Python
Metaanalyse in Python
Unittest in Python
Epoche in Python
Zwietracht in Python
Deutsch in Python
DCI in Python
Quicksort in Python
nCr in Python
N-Gramm in Python
Programmieren mit Python
Plink in Python
Konstante in Python
Python auf Mac
FizzBuzz in Python
SQLite in Python
Schritt AIC in Python
LINE-Bot [0] in Python
CSV in Python
Reverse Assembler mit Python
Reflexion in Python
Konstante in Python
nCr in Python.
Format in Python
Scons in Python 3
Puyopuyo in Python
Python in Virtualenv
PPAP in Python
Quad-Tree in Python
Reflexion in Python
Chemie mit Python
Hashbar in Python
DirectLiNGAM in Python
LiNGAM in Python
In Python reduzieren
Holen Sie sich Ihre eigene IP-Adresse in Python
In Python flach drücken
Versuchen Sie, mit Mongo in Python auf dem Mac zu arbeiten
Denken Sie daran, eine Python 3-Umgebung in einer Mac-Umgebung zu erstellen
Fügen Sie ein Objekt in eine Zeichenfolge in Python ein
Sortierte Liste in Python
Täglicher AtCoder # 36 mit Python
Clustertext in Python
AtCoder # 2 jeden Tag mit Python
Täglicher AtCoder # 32 in Python
Täglicher AtCoder # 6 in Python
Täglicher AtCoder # 18 in Python
Bearbeiten Sie Schriftarten in Python