2
레지스트리 편집 .reg 파일에서 변환 한 CSV가 있습니다. Dataframe 아래와 같이 :다른 열 값을 기준으로 데이터 프레임의 열에 값 지정
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
나는 헥스 (7)와 진수 (2) 다음과 같은 문자를 ASCII로 형식을 변환하는 내가 CSV로 내보내기 전에 내가 바로 전화 기능을 가지고 :
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
I을 이 기능이 작동 함을 확인했습니다.
df['Value'] = df[df['Type'].str.contains('hex\\(2\\)')]['Value'].apply(lambda x: fn("".join(x)))
이 ASCII로 내 타입 육각 (2) 변환하지만, 다른 유형의 나머지 값을 제거합니다
내 문제는 내가 아래와 같이 변환 할 때이다.
df[df['Type'].str.contains('hex\\(2\\)')]['Value'] = df[df['Type'].str.contains('hex\\(2\\)')]['Value'].apply(lambda x: fn("".join(x)))
어떻게 난 그냥 헥스 (7)와 진수 (2)의 값을 참조하고 단지 내 dataframe에 그 값을 교체하고 혼자 나머지 값을 남길 수 있습니다 :
은 또한 다음과 같은 것을 시도? 당신의 도움을 주셔서 감사합니다.
@johnnyb을이 시도'df.loc [df.Type.str.contains를 ('^ (? 헥스 | 헥스 \ ([27] {1} \)) $ ')]' – MaxU
내 fn() 함수를 참조하면 예상대로 작동하지 않을 수 있습니다. 이유가 있었습니까? – johnnyb
@johnnyb, 죄송합니다, 내가 틀 렸습니다. 나는 그 주석을 제거했습니다. – MaxU