私は2つのテキストファイルを持っています。 「A.TXT」は1つのtxtファイルから価値を得て別のファイルに追加するには?
A 1 AB ... 1 5 -3 4.5 (contains 11 columns. So "4.5" is in the 11th column)
A 2 BC ... -2 3 8 9.2
A 3 WE ... 2 3 8 5.2
A 4 RT ... 23 2 24 4.1
...
END
を含む「B.TXTは」最終2列は「A.TXT」とは異なることを除いて同様です。もう一つの違いは、 "B.txt"には "A.txt"にないいくつかの追加の行が含まれていることです。例えば、第3ラインA 3 QEW ... 5 23 34 5
は私がやりたいことA.TXT」の各行の最後の列の値を抽出している「A.TXT」
A 1 AB ... 1 5 4 9
A 2 BC ... -2 3 1 0
A 3 QEW ... 5 23 34 5
A 4 WE ... 2 3 -7 56
A 5 RT ... 23 2 -5 14
...
END
「B.TXT」にあるがありません"B.txt"の対応する行に追加します。 "A.txt"にない "B.txt"の各行について、3番目の列要素が文字 "Q"(例えばQEW)で始まり、それ以外の場合は値2を追加する場合は値1を追加したい。出力は次のようになります
A 1 AB ... 1 5 4 9 4.5
A 2 BC ... -2 3 1 0 9.2
A 3 QEW ... 5 23 34 5 1
A 4 WE ... 2 3 -7 56 5.2
A 5 RT ... 23 2 -5 14 4.1
...
END
私は以下のコードを試しましたが、出力は生成されませんでした。私は何か間違っているのですか?
def main():
#enter python code.py A.txt B.txt in command line
A = open(sys.argv[1])
AAlist = []
TE = []
i=1
for line in A:
linestr = ' '.join(line.split())
if linestr[1]==i:
AAlist.append(linestr[2])
TE.append(linestr[10])
i+=1
BAlist = []
i=0
j=0
with open(sys.argv[2]) as B, open('outputpy.txt', 'w') as out_file:
for line in B:
linestr = ' '.join(line.split())
if linestr[1]==j:
at = linestr[2]
BAlist.append(atm)
if at!=AAlist[i]:
if at[0]=='Q':
out_file.write(1)
else:
out_file.write(2)
#print >> outfile
out_file.write(TE[i])
i+=1
j+=1
print "finished"
Linuxコマンドを使用して操作する方法はありますか? Pythonコードより簡単ですか?
編集:私は、私が正しくあなたを理解している場合、出力は
ヒント:awkはこの種のものに適しています。 – 3442
2つの行が同じであるかどうかをどのように判断しますか? 「A 3 WE ...」は「A 4 WE ...」と同じですか? – pfnuesel
いいえ3は4と同じではないので「同じ」ではありません。私は質問を編集しましたので、今よりもっと明確になりました – user5739619