我有以下文字:
{
'inputbuffer': 'x06x00x00x00ExplorerStartMenuReadyx00',
'devicehandle': '0x0000033c',
'controlcode': 2228388,
'outputbuffer': 'Ŝx1b3Ϝx83)蝸11\x84ط°\x022��Ѕ\x01A\x81wM\x9c4ø_-1@:b3.Ϝx#8?3)蝸11\x84ط°\x022\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00',
'function': 'openfile'
}
我想替换以下部分:
'inputbuffer': 'x06x00x00x00ExplorerStartMenuReadyx00'
与
'inputbuffer':
和
'outputbuffer': 'Ŝx1b3Ϝx83)蝸11\x84ط°\x022��Ѕ\x01A\x81wM\x9c4ø_-1@:b3.Ϝx#8?3)蝸11\x84ط°\x022\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
与
'outputbuffer':
我写了以下python代码:
import codecs
import base64
x1="{'inputbuffer': 'x06x00x00x00ExplorerStartMenuReadyx00', 'devicehandle': '0x0000033c', 'controlcode': 2228388, 'outputbuffer': 'Ŝx1b3Ϝx83)蝸11\x84ط°\x022��Ѕ\x01A\x81wM\x9c4ø_-1@:b3.Ϝx#8?3)蝸11\x84ط°\x022\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', 'function': 'openfile' }"
x3=re.sub(r'(^\w+)','',x1)
x4=re.sub(r'(\<|>)','',x3)
x5=re.sub(r'[^\x00-\x7F]+','', x4)
x6=re.sub(r'(\$|%|\|\(|\)|\\|@|\.|_|-|#|\?)','',x5)
x9=re.sub(r'\'outputbuffer\':\s\'.*\'','\'outputbuffer\':',x6, flags=re.IGNORECASE)
x10=re.sub(r'\'inputbuffer\':\s\'.*\',\s','\'inputbuffer\':',x9, flags=re.MULTILINE)
print(x10)
所需的输出应仅替换这两个部分,并保持其他部分完整如下:
{'inputbuffer':, 'devicehandle': '0x0000033c', 'controlcode': 2228388, 'outputbuffer': }
但我得到的是:
{'inputbuffer':'controlcode': 2228388, 'outputbuffer': }
删除了应保留在结果文本中的部分内容。
如果有人帮我弄清楚这段代码有什么问题,我将非常感激。
答案 0 :(得分:1)
不要将你的json转换为文本,你可以很容易地实现你的目标。只需使用此代码
x1 = {'inputbuffer': 'x06x00x00x00ExplorerStartMenuReadyx00', 'devicehandle': '0x0000033c', 'controlcode': 2228388, 'outputbuffer': 'Ŝx1b3Ϝx83)蝸11\x84ط°\x022��Ѕ\x01A\x81wM\x9c4ø_-1@:b3.Ϝx#8?3)蝸11\x84ط°\x022\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', 'function': 'openfile' }
x1[inputbuffer] = ""
x2[outputbuffer] = ""
print(x1)