Python re.sub将十六进制替换为字符串

Python re.sub将十六进制替换为字符串,python,regex,python-3.x,hex,Python,Regex,Python 3.x,Hex,我有一个包含要转换为字符串的十六进制数的文件: '\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, binasc

我有一个包含要转换为字符串的十六进制数的文件:

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

您用于查找十六进制字符串的正则表达式是错误的,因为它甚至将
状态
查找为十六进制字符串

您可以使用以下代码片段

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)
您用于查找十六进制字符串的正则表达式是错误的,因为它甚至将
状态
查找为十六进制字符串