私は2つのファイルを持っています
ファイル1:
IdName1 Info1 Info2 Info3 #Info: from program1 for name1 #Info: from program2 for name1
IdName2 Info1 Info2 Info3 #Info: from program1 for name2 #Info: from program2 for name2
IdName4 Info1 Info2 Info3 #Info: from program1 for name4
IdName3 Info1 Info2 Info3 #Info: from program1 for name3 #Info: from program2 for name3
ファイル 2:
# ProgramInfo
# Query: IdName1 Info1 Info2 Info3
# DatabaseInfo
# FiledInfo
line1
line2
# ProgramInfo
# Query: IdName2 Info1 Info2 Info3
# DatabaseInfo
# FiledInfo
# ProgramInfo
# Query: IdName4 Info1 Info2 Info3
# DatabaseInfo
# FiledInfo
line1
line2
line3
line4
ここで、「IdName1 Info1 Info2 Info3」が「#Query:」の後に File2 にあるかどうかを確認する必要があります。そうである場合は、File1 のその行から iformation を分割し、対応する「# ProgramInfo」行の前に File2 に挿入する必要があります。 . 出力ファイルは次のようになります。
出力ファイル:
# IdName1 Info1 Info2 Info3
# Info: from program1 for name1
# Info: from program2 for name1
# ProgramInfo
# Query: IdName1 Info1 Info2 Info3
# DatabaseInfo
# FiledInfo
line1
line2
# IdName2 Info1 Info2 Info3
# Info: from program1 for name2
# Info: from program2 for name2
# ProgramInfo
# Query: IdName2 Info1 Info2 Info3
# DatabaseInfo
# FiledInfo
# IdName4 Info1 Info2 Info3
# Info: from program1 for name4
# ProgramInfo
# Query: IdName4 Info1 Info2 Info3
# DatabaseInfo
# FiledInfo
line1
line2
line3
line4
私の質問は、対応する 3 行を File2 に追加する方法です。次のようなことを試みています。
import sys
def programs_info_comb(fileName1, fileName2):
my_file1 = open(fileName1, "r")
my_line1=my_file1.readlines()
my_file2 = open(fileName2, "r")
my_line2=my_file2.readlines()
for line1 in my_line1:
(name1, info1, info2)= line1.strip().split("\t")
for line2 in my_line2:
if line2.startswith("# Q"):
name2 = line2[9:-1]
if name1 == name2:
#### here Im lost how to tell where I want those next two lines to be printed
print "#"+" "+name1
print info1
print info2
my_file1.close
my_file2.close
if __name__== "__main__":
programs_info_comb(sys.argv[1], sys.argv[2])
これにはおそらくもっと簡単な方法があります。すべての助けがありがたく受け入れられます