我有一个从注册表编辑.reg文件转换的csv。数据帧如下:
Path,Key,Type,Value,date_time
HKEY_LOCAL_MACHINE\SYSTEM\Setup\Upgrade\NsiMigrationRoot\7\1,Key,hex(0),0000000180000600,1487463163.916084
HKEY_LOCAL_MACHINE\SYSTEM\Setup\Upgrade\NsiMigrationRoot\7\1,KeyLength,dword,00000008,1487463163.916084
HKEY_LOCAL_MACHINE\SYSTEM\Setup\Upgrade\NsiMigrationRoot\7\1,Rw,hex(0),ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffffffffffff,1487463163.916084
HKEY_LOCAL_MACHINE\SYSTEM\Setup\Upgrade\NsiMigrationRoot\7\1,RwLength,dword,000000e8,1487463163.916084
HKEY_LOCAL_MACHINE\SYSTEM\Setup\Upgrade\NsiMigrationRoot\7\1,RwMask,hex(0),ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff,1487463163.916084
HKEY_LOCAL_MACHINE\SYSTEM\Setup\Upgrade\NsiMigrationRoot\7\2,Key,hex(0),0000000080000600,1487463163.916084
HKEY_LOCAL_MACHINE\SYSTEM\Setup\Upgrade\NsiMigrationRoot\7\2,KeyLength,dword,00000008,1487463163.916084
HKEY_LOCAL_MACHINE\SYSTEM\Setup\Upgrade\NsiMigrationRoot\7\2,Rw,hex(0),ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffffffffffff0000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffffffffffff,1487463163.916084
HKEY_LOCAL_MACHINE\SYSTEM\Setup\Upgrade\NsiMigrationRoot\7\2,RwLength,dword,000000e8,1487463163.916084
HKEY_LOCAL_MACHINE\SYSTEM\Setup\Upgrade\NsiMigrationRoot\7\2,RwMask,hex(0),ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff,1487463163.916084
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.bmp,@,NONE,Paint.Picture,1487463163.916084
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.bmp,Content Type,NONE,image/bmp,1487463163.916084
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.bmp,PerceivedType,NONE,image,1487463163.916084
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.bmp\OpenWithList,NONE,NONE,NONE,1487463163.916084
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.bmp\OpenWithList\MSPaint.exe,@,NONE,,1487463163.916084
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.bmp\OpenWithProgids,Paint.Picture,NONE,,1487463163.916084
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.bmp\PersistentHandler,@,NONE,{098f2470-bae0-11cd-b579-08002b30bfeb},1487463163.916084
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.bmp\ShellNew,ItemName,hex(2),40002500730079007300740065006d0072006f006f00740025005c00730079007300740065006d00330032005c006d0073007000610069006e0074002e006500780065002c002d00350039003400310034000000,1487463163.916084
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.bmp\ShellNew,NullFile,NONE,,1487463163.916084
在导出到csv之前,我调用了一个函数,将十六进制(7)和十六进制(2)类型转换为ascii字符,如下所示:
def fn(foo):
if "NONE" in foo:
return foo
else:
try:
x = re.sub(' |\n|\t|00', '', foo)
return "".join(binascii.unhexlify(x).decode())
except:
binascii.Error
我已经验证了这个函数的有效性。你知道吗
我的问题是,当我转换如下:
df['Value'] = df[df['Type'].str.contains('hex\\(2\\)')]['Value'].apply(lambda x: fn("".join(x)))
这会将我的类型hex(2)转换为ascii,但会删除其他类型的剩余值。你知道吗
我还尝试了以下方法:
df[df['Type'].str.contains('hex\\(2\\)')]['Value'] = df[df['Type'].str.contains('hex\\(2\\)')]['Value'].apply(lambda x: fn("".join(x)))
如何只引用十六进制(7)和十六进制(2)值,并仅在数据帧中替换它们的值,而保留其余的值?谢谢你的帮助。你知道吗
试试这个:
相关问题 更多 >
编程相关推荐