我正在尝试解析一个文本文件搜索函数,并将i
添加到该行。我的输入文件是一个文本文件,其中的数据为列格式。我阅读了这个文本文件,搜索所有带参数的函数,并添加了一个额外的列,该列将i
写入到具有带参数函数的每一行,将v
写入到具有无参数函数的每个行。我使用的逻辑是
filter_list = ["int","unsigned","void","*"]
for line in f:
if ".text" in line:
if "()" in line:
columns = line.split(" ")
columns.insert(0, "v")
g.write(" ".join(columns)+" ")
continue
if "(" in line:
for word in filter_list:
columns = line.split()
columns.insert(0, "i")
g.write(" ".join(columns)+" ")
f.close()
g.close()
这不会给出正确的输出。此逻辑继续将i
添加到第一个参数(如)之后的完整行
i 00010518 .text hl_mount_storage(FileSystemObject&, char i 00010518 .text hl_mount_storage(FileSystemObject&, char i 00010518 .text hl_mount_storage(FileSystemObject&, char i 00010518 .text hl_mount_storage(FileSystemObject&, char a 2007c000 .data g_pkt_hist_wptr
这一行将g.write
重复到过滤器中每个单词的输出文件:
for word in filter_list:
因此目前是4倍(filter_list
的长度)。如果你再加一个单词,你会得到同一行的5个副本。
由于您无论如何都不使用word
或filter_list
,因此只需删除整个for
循环:
if "(" in line:
columns = line.split()
columns.insert(0, "i")
g.write(" ".join(columns)+" ")