如何在python中的每个字节后添加空格

时间:2017-05-26 10:01:37

标签: python

我有一个包含一组行的文件,每行包含一个十六进制数。我需要在每个字节后添加空格。例如:

84dd251ae078d70a55ead31b4e8c3acd

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

在修改之后,我想将结果保存在一个新文件中:我试图这样做:

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')

结果是:

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

而不是:

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

我怎么能解决这个问题?

1 个答案:

答案 0 :(得分:1)

您可以尝试re模块一次获取2个元素,返回数组然后用空格连接

import re

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

实施例

>>> 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'