Python:从汇编代码中删除控制指令并查找依赖项

Python:从汇编代码中删除控制指令并查找依赖项,python,python-2.7,Python,Python 2.7,根据评论编辑问题: 我有一个汇编代码文件,说明如下: Line[1]: | [wrr a10,a9] [add a8,a10,a3] [ld.n a8,a8,16] Line[2]: | [add a8,a10,a3] [ld.n a8,a8,16] [call a8]

根据评论编辑问题:

我有一个汇编代码文件,说明如下:

Line[1]:       | [wrr a10,a9] [add a8,a10,a3] [ld.n a8,a8,16]                                                              
Line[2]:       | [add a8,a10,a3] [ld.n a8,a8,16] [call a8]                                                                 
Line[3]:       | [ld.n a8,a8,16] [call a8] [entry a1,32]                                                                      
Line[4]:       | [call a8] [entry a1,32] [ld a8,0x1fff8910]                                                                   
Line[5]:       | [entry a1,32] [ld a8,0x1fff8910] [ext a3,a2,0,8]                                                             
Line[6]:       | [st.n a15,a1,12] [st.n a12,a1,16] [st.n a9,a1,8]                                                            
Line[7]:       | [ext a3,a2,0,8] [sll a3,a3,4] [add.n a3,a3,a8]                                                                
Line[8]:       | [sll a3,a3,4] [add.n a3,a3,a8] [ld a11,a3,128]    
我想删除下表中描述的控制指令以及指令中出现的任何两个后续加载存储:

control_instructions = ['call', 'entry', 'j']

2_consecutive_remove = ['st', 'ld]
(如果在一行的两个连续列表项中出现ld或st,我必须删除该行)

由于call和entry出现在第2-5行,第6行有两个连续的st指令,所以我的输出应该只打印第1、7、8行

我试图用下面的代码删除控制指令,但似乎不起作用。任何帮助都将不胜感激

new_lines = [line for line in old_lines if not any(x in y for x in control_instructions for y in line )]

您有一个文件而不是列表,因此:

control_instructions = ['call', 'entry', 'j']
cleaned = []
consecutive_remove = ['st.n', 'ld']
with open("your_log.txt") as f:
    for line in f:
        if not any(x in line for x in control_instructions) and sum(line.count(x) for x in consecutive_remove)  <= 1 :
            cleaned.append(line)
            print line

Line[1]: | [wrr a10,a9] [add a8,a10,a3] [ld.n a8,a8,16]

Line[7]: | [ext a3,a2,0,8] [sll a3,a3,4] [add.n a3,a3,a8]

Line[8]: | [sll a3,a3,4] [add.n a3,a3,a8] [ld a11,a3,128]
control_指令=['call','entry','j']
清洁=[]
连续删除=['st.n','ld']
将open(“your_log.txt”)作为f:
对于f中的行:

如果没有(控制指令中x的行中的x)和sum(连续删除中x的行数(x))到目前为止,您尝试过什么吗?这个问题似乎脱离主题,因为这不是一个代码编写服务。项到搜索=['abc',pqr',xyz']新列表=[]对于原始_列表中的项目:对于项目_至_搜索中的项目2:如果项目2不在原始_列表中:新建_列表。追加(项目)@user3769674编辑问题,以包括您的代码和问题的精确描述(例如输入、预期和实际输出).@jonrsharpe:编辑了问题以包含精确的描述。@Padriac Cunningham:我尝试了上面的几行,但似乎没有删除预期的几行。请将原始列表中的几行完全按照它们所表示的内容发布locally@Padriac坎宁安:我已经编辑了原始帖子,以包括原始列表。它有一行[Num],后面是组装说明列表。@Padriac Cunningham:谢谢你的回答。尽管上述代码行删除了控制指令,“连续删除中x的行数(x)”返回“0xXXXX处的生成器对象”。代码中的搜索模式类型是否不匹配?为什么返回any行?你不应该用那个做任何事。