在文本文件中搜索一行,并在其前面写一个单词



我正在尝试解析一个文本文件搜索函数,并将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个副本。

由于您无论如何都不使用wordfilter_list,因此只需删除整个for循环:

if "(" in line:
    columns = line.split()
    columns.insert(0, "i")
    g.write("  ".join(columns)+"  ")

最新更新