請查看我的示例代碼。我的input.csv中的State0是1101,state1是1100,state2是100.我想在輸出中寫入一行,每行將從第[2]行中選擇一個代碼。像ID 1一樣,它應該選擇23456並寫入,從ID 2選擇45632並寫入,從ID 3選擇31276並寫入。我想用每個ID的全部三個代碼寫一行。目前在執行代碼後,我得到ID爲23456的正確ID爲234456,這是錯誤的。它應該是45632,並且對於ID 3,它正在寫入31276的正確值。我想爲每個ID編寫第一個代碼。 Out.CSV預計結果在CSV上過濾出唯一的行
import csv
import glob
search_string = 'CAT'
state0 = '1101'
state1 = '1100'
state2 = '100'
corner1 = "TM"
with open("out.csv") as sample:
reader = csv.reader(sample,delimiter="\t")
header = 'ID', 'Code', 'state'
with open("out1.csv", "wb") as out1:
writer = csv.writer(out1)
writer.writerow(header)
for path in glob.glob("out.csv"):
if path == "out1.csv": continue
with open(path) as fh:
reader = csv.reader(fh)
for row in reader:
if corner1 in row:
if search_string in row:
if state0 in row:
readers = list(row)
readers.append(row[2])
elif state1 in row:
readers1 = list(readers)
readers1.append(row[2])
elif state2 in row:
readers2 = list(readers1)
readers2.append(row[2])
print(readers2)
writer.writerow(readers2)
break
Input.CSV
ID Code state
1 23456 1101
1 34567 1101
1 12354 1101
2 45632 1100
2 56798 1100
2 23412 1100
3 31276 100
3 98065 100
3 26987 100
Out.CSV(預期)
ID Code state
1 23456 1101 23456 45632 31276
可以縮短你的解釋,並提供一個[MCVE]。我覺得你離那不太遠,但是想想別人沒有1小時閱讀你的文字。 –
我剛編輯我的問題。感謝您的建議。 –
更好,但代碼並不完整(我們只能看到循環),而且還不清楚csv是什麼:您得到的結果或預期的結果? [mcve]需要一些額外的工作。 –