我对Python比较陌生。我正在尝试提取文本文件的特定部分(列)。我无法获得预期的输出。
文本文件如下(希望换行符和回车符可以访问)
000022E4 ST0=FFFFFFFFFFFFFFFF ST1=FFFFFFFFFFFFFFFF ST2=FFFFFFFFFFFFFFFF ST3=FFFFFFFFFFFFFFFF ST4=FFFFFFFFFFFFFFFF ST5=FFFFFFFFFFFFFFFF ST6=FFFFFFFFFFFFFFFF ST7=FFFFFFFFFFFFFFFF CTRL=FFFF CS=0023 DS=002B ES=002B FS=0053 GS=002B SS=002B EAX=00000001 EBX=0063CC4C ECX=80049550 EDX=00000000 ESI=8004959F EDI=800495AB EBP=0063CD18 ESP=0063CC2C EFL=00000246 XMM0= XMM1= XMM2= XMM3= XMM4= XMM5= XMM6= XMM7= MXCSR=FFFFFFFF MM0= MM1= MM2= MM3=
000022E4 .text:main push ebp ESP=0063CC28
000022E4 .text:main+1 mov ebp, esp EBP=0063CC28
000022E4 .text:main+3 and esp, 0FFFFFFF0h ESP=0063CC20 PF=0 ZF=0
000022E4 .text:main+6 call __main ESP=0063CC1C
提取结果如下:
push
mov
and
call
我很想知道从给定的文本文件中提取此信息的最佳方法是什么。
(这是一个示例片段,实际的文本文件包含大量文件,但格式相同)
注意:幸运的是,如果将此处查询中的文本文件内容复制粘贴到Notepad ++或任何编辑器中,则可以看到实际的文件结构(以及换行符和回车符)。
答案 0 :(得分:0)
正则表达式在这里似乎不合适,因为您的文本文件似乎使用了固定宽度的列。使用切片来提取列,修剪空格并忽略任何空行:
result = []
with open("file.txt", "r") as f:
for line in f:
instruction = line[40:48].strip()
if instruction:
result.append(instruction)
print(result) # => ['push', 'mov', 'and', 'call']