次の 2 種類の txt ファイルがあります。
ファイル1
Sample1012, Male, 36, Stinky, Bad Hair
Sample1043, Female, 28, Hot, Short Hair, Hot Body, Hates Me
Sample23905, Female, 42, Cougar, Long Hair, Chub
Sample123, Male, 32, Party Guy
ファイル2
DEAD, Sample123, Car Accident, Drunk, Dumb
ALIVE, Sample1012, Alone
ALIVE, Sample23905, STD
DEAD, Sample1043, Too Hot, Exploded
サンプル フィールドに基づいてこれらのファイルを結合する単純な Python スクリプトを書きたいだけですが、データ列の乱数に関する問題が発生し続けます。たとえば、私は次のようになります。
Sample1012, Male, 36, Stinky, Bad Hair, ALIVE, Sample1012, Alone
Sample1043, Female, 28, Hot, Short Hair, Hot Body, Hates Me, DEAD, Sample1043, Too Hot, Exploded
Sample23905, Female, 42, Cougar, Long Hair, Chub, ALIVE, Sample23905, STD
Sample123, Male, 32, Party Guy, DEAD, Sample123, Car Accident, Drunk, Dumb
私が欲しいのは:
Sample1012, Male, 36, Stinky, Bad Hair, EMPTY COLUMN, EMPTY COLUMN, ALIVE, Sample1012, Alone
Sample1043, Female, 28, Hot, Short Hair, Hot Body, Hates Me, DEAD, Sample1043, Too Hot, Exploded
Sample23905, Female, 42, Cougar, Long Hair, Chub, EMPTY COLUMN, ALIVE, Sample23905, STD
Sample123, Male, 32, Party Guy, EMPTY COLUMN, EMPTY COLUMN, EMPTY COLUMN, DEAD, Sample123, Car Accident, Drunk, Dumb
基本的に、.readlines() を使用して両方のファイルを読み取り、関連する列とサンプル ID を単純な「==」で比較し、true の場合は最初のファイルと 2 番目のファイルの行を出力します。
len() を使用して file1 の最大列数を決定する方法がわからないため、他のファイルから行を追加する前に、各行の最後で最大列数でない場合にそれを考慮することができます ( "==" は真です)。
どんな助けでも大歓迎です。
アップデート:
これは私が今得たものです:
import sys
import csv
usage = "usage: python Integrator.py <table_file> <project_file> <outfile>"
if len(sys.argv) != 4:
print usage
sys.exit(0)
project = open(sys.argv[1], "rb")
table = open(sys.argv[2], "rb").readlines()
outfile = open(sys.argv[3], "w")
table[0] = "Total Table Output \n"
newtablefile = open(sys.argv[2], "w")
for line in table:
newtablefile.write(line)
projectfile = csv.reader(project, delimiter="\t")
newtablefile = csv.reader(table, delimiter="\t")
result = []
for p in projectfile:
print p
for t in newtablefile:
#print t
if p[1].strip() == t[0].strip():
del t[0]
load = p + t
result.append(load)
for line in result:
outfile.write(line)
outfile.close()
for ループを一緒に動作させることができません - 停止時のばかげたことは気にしないでください。ファイルの 1 つは最初の行が空白です。