2017-05-26 7 views
1

Ich habe eine Datei, die eine Reihe von Zeilen enthält, jede Zeile enthält eine Hexadezimalzahl. Ich muss nach jedem Byte Platz hinzufügen. Zum Beispiel:Wie Raum nach jedem Byte in Python hinzufügen

84dd251ae078d70a55ead31b4e8c3acd 

84 dd 25 1a e0 78 d7 0a 55 ea d3 1b 4e 8c 3a cd 

Nach dieser Änderung mag ich das Ergebnis in einer neuen Datei speichern: Ich habe versucht, das zu tun:

Srcpath ='File_Without_Space' 
Destpath ='Files_With_Space' 
with open(Srcpath, 'r') as f: 
    with open(Destpath, 'w') as fp: 
     for key in f: 
      print(key) 
      key_Separated=[key[i:i+2] for i in range(0, len(key), 2)] 
      print (key_Separated) 
      fp.write(str(key_Separated) +'\n') 

Howeer das Ergebnis:

['3c', 'd4', '20', '74', '81', '04', '49', '8d', '9b', 'f0', '66', '99', 'dd', 'a3', 'ee', 'd1', '\n'] 

anstatt zu sein:

84 dd 25 1a e0 78 d7 0a 55 ea d3 1b 4e 8c 3a cd 

Wie kann ich dieses Problem lösen?

+1

Sie erzeugt eine Liste beitreten; Jetzt verbinden Sie es einfach mit einem Leerzeichen: 'rejoined = '' .join (key_Separated)'. –

+0

Sie müssen nur die Ergebnisliste hinzufügen: '".. .join (key_Separated) '. – CristiFati

Antwort

1

Sie re Modul können versuchen, 2 Elemente zu einer Zeit zu erhalten, die Array zurückgibt und sie dann mit Platz

import re 

.... 
print(key) 
key_Separated = " ".join(re.findall('([0-9a-f]{2}|[0-9a-f])', s)) 
print (key_Separated) 

Beispiel

>>> import re 
>>> s = "84dd251ae078d70a55ead31b4e8c3acd" 
>>> " ".join(re.findall('([0-9a-f]{2}|[0-9a-f])', s)) 
'84 dd 25 1a e0 78 d7 0a 55 ea d3 1b 4e 8c 3a cd' 

>>> s = "84dd251ae078d70a55ead31b4e8c3acda" 
>>> " ".join(re.findall('([0-9a-f]{2}|[0-9a-f])', s)) 
'84 dd 25 1a e0 78 d7 0a 55 ea d3 1b 4e 8c 3a cd a' 

>>> s = "84dd251ae078d70a55ead31b4e8c3acda1" 
>>> " ".join(re.findall('([0-9a-f]{2}|[0-9a-f])', s)) 
'84 dd 25 1a e0 78 d7 0a 55 ea d3 1b 4e 8c 3a cd a1' 
+0

Wenn Sie jedoch ein hinteres Hex-Zeichen haben, würde dies einfach ignoriert werden - das könnte ein Hinweis auf ungültige Eingabe sein ... Plus andere Faktoren wie nicht gültige Capture-Zeichen, die nicht Teil der Eingabe usw. sind .. –

+0

@ JonClements guten Punkt. Aber OP erwähnte, dass es nur Sechskantteil enthalten wird –

+0

Immer gut, um wo möglich robust zu sein, wenn die Werkzeuge leicht verfügbar sind –

Verwandte Themen