用字符串替换十六进制

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (90)

我有一个包含十六进制数字的文件,我想将这些数字转换成字符串:

'\x73\x63\x6f\x72\x65\x73': '\x4c\x6f\x72\x65\x6d\x20\x69\x70\x73\x75\x6d',
'Status', ['\x75\x70\x64\x61\x74\x65']  

但是,当使用re.sub用ascii表示替换十六进制转义数时,它似乎一开始就找不到十六进制数。

我试过使用原始字符串,但没有改变任何东西。我还是不能换掉它们。

import re, binascii
with open('hex.txt', 'r') as f:
    file = f.read()
    hexList = re.findall(r"'([\\x\w+]*)'", file)

    for item in hexList:
        file = re.sub(r"('{}')".format(item), str(binascii.unhexlify(item.replace('\\x', ''))), file)
        #file = re.sub("('"+item+"')".format(item), str(binascii.unhexlify(item.replace('\\x', ''))), file)
    print(file)```
提问于
用户回答回答于

可以使用以下代码片段

import re, binascii
with open('hex.txt', 'r') as f:
    file = f.read()
    hexList = re.findall(r'((?:\\x[0-9a-f][0-9a-f])+)', file)

    for item in hexList:
        file = re.sub(r"('{}')".format(item.replace('\\', '\\\\')), str(binascii.unhexlify(item.replace('\\x', ''))), file)
    print(file)

用于查找十六进制字符串的正则表达式是错误的,因为它甚至正在查找Status作为六角线。

所属标签

可能回答问题的人

  • EatRice

    16 粉丝0 提问10 回答
  • 最爱开车啦

    9 粉丝503 提问3 回答
  • 成都加米谷大数据

    5 粉丝0 提问3 回答
  • 学生

    8 粉丝476 提问3 回答

扫码关注云+社区

领取腾讯云代金券