使用python提取.txt文件的特定部分

时间:2019-08-07 17:05:12

标签: python regex

我对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 ++或任何编辑器中,则可以看到实际的文件结构(以及换行符和回车符)。

snap with needed info highlighted

1 个答案:

答案 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']