问题如下:
我在做一件事文件.read(100)得到一条直线,如下所示:
line='1\x01\x1e17=00000000\x1e54=80300A00\x1e50=1\x1e56=2008080106010414\x1c\x1e247=CD\x1e6=In\x1e5=Boot\x1e180=0.445\x1e179=0.380\x1e55=AAA\x1e57=2008080100000000\x1e212=5000\x1e213=20000\x1e115=500\x1d\x1e29=5T2lqZHNAwg=\x01\x1e17=00000000'
我要做的是在这一行中搜索十六进制数,并将它们转换为新操作的行。
所以基本上我想做:
t=re.findall(r'[\x80-\xff]', line) #Somehow get the positions
for i in t: ord(i) #Something to this effect to replace all the hexadecimals it finds
使用我为t编写的代码,我找不到行中的所有字符,更不用说它们的位置了。
我想知道是否有人对如何最好地解决这个问题有什么想法。谢谢。你知道吗
\x
是一个转义x,这是一个无效的转义。你的问题不是正则表达式,而是你的编码你的line
不是一个文本字符串。试试print
ingline
,您应该会看到以下内容:很可能,这就是你需要的。简而言之,十六进制值就是这样。你知道吗
如果在此之后,您仍然希望获得十六进制值,则必须在字符串的开头添加一个
r
,如下所示:使其成为字符串文字。Regex应该像处理其他字符串一样处理文本。你知道吗
您可以找到字符
\x
(以及[0]和[len(t)-1]的所有索引,然后遍历该列表并成对地进行切片,如len(t)中i的ord(t[i:i+1])
相关问题 更多 >
编程相关推荐