[Python] Insérez ":" dans l'adresse MAC

Je fais ma propre capture de paquets pour étudier le réseau. J'écrivais le processus d'analyse de la trame Ethernet. Lorsque les données brutes reçues par le socket sont converties en chaîne de caractères, l'adresse MAC est Il est acquis sans le point-virgule ":" inséré.

Je veux insérer un point-virgule


000c29ecc97a
↓ Je veux faire ça ↓
00:0c:29:ec:c9:7a

Puisqu'il s'agit d'une liste de chaînes de caractères, dois-je la diviser en sous-listes de 2 caractères chacune et la joindre avec ":"? Quand je l'ai googlé, j'ai trouvé zip (\ * [iter (s)] * n) comme technique pour le diviser en sous-listes à n caractères.

Insérer un point-virgule avec fractionnement et jointure


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

':'.join(map(''.join, zip(*[iter(s)]*2)))Mais***C'est difficile à lire***。


 C'est une bonne technique, mais c'est désagréable car c'est difficile à comprendre sans le savoir.
 La prochaine chose que j'ai trouvée était de savoir comment le remplacer par une expression régulière.


#### **`Insérer un point-virgule avec une expression régulière`**
```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'

Je me demande si celui-ci est plus facile à voir. Look-ahead négatif (?! $) Est important pour que ":" ne soit pas inséré à la fin.

Recommended Posts

[Python] Insérez ":" dans l'adresse MAC
Méthode Hash (méthode d'adresse ouverte) en Python
[Introduction] Insérer des sauts de ligne dans Python 3
Quadtree en Python --2
Python en optimisation
CURL en Python
Métaprogrammation avec Python
Python 3.3 avec Anaconda
Géocodage en python
SendKeys en Python
Méta-analyse en Python
Unittest en Python
Époque en Python
Discord en Python
Allemand en Python
DCI en Python
tri rapide en python
nCr en python
N-Gram en Python
Programmation avec Python
Plink en Python
Constante en Python
python sur mac
FizzBuzz en Python
Sqlite en Python
Étape AIC en Python
LINE-Bot [0] en Python
CSV en Python
Assemblage inversé avec Python
Réflexion en Python
Constante en Python
nCr en Python.
format en python
Scons en Python 3
Puyopuyo en python
python dans virtualenv
PPAP en Python
Quad-tree en Python
Réflexion en Python
Chimie avec Python
Hashable en Python
DirectLiNGAM en Python
LiNGAM en Python
Aplatir en Python
Obtenez votre propre adresse IP en Python
Aplatir en python
Essayez de travailler avec Mongo en Python sur Mac
Pensez à créer un environnement Python 3 dans un environnement Mac
Insérer un objet dans une chaîne en Python
Liste triée en Python
AtCoder # 36 quotidien avec Python
Texte de cluster en Python
AtCoder # 2 tous les jours avec Python
Daily AtCoder # 32 en Python
Daily AtCoder # 6 en Python
Daily AtCoder # 18 en Python
Modifier les polices en Python