簡體   English   中英

在文本文件中搜索一行並在其前面寫一個單詞

[英]Search a line in text file and write a word before it

我試圖解析文本文件搜索功能,並將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)+"  ")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM