我有一个包含一组行的文件,每行都包含一个十六进制数字。我需要在每个字节后添加空格。例如:
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
请问我该如何解决这个问题?
您可以尝试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'
我是一名优秀的程序员,十分优秀!