我收到了一個從TSV/CSV文件收集數據的循環問題。 問題是我檢查用戶標識符是否在我的tsv文件中,以及是否只是進行常規打印。但事情是它不加起來。運行後停止TSV/CSV文件循環運行
讓我用,我有現在直到代碼解釋一下:
import csv
with open("source/to/file.tsv") as tsvfile:
tsvreader = csv.reader(tsvfile, delimiter="\t")
for i in range(1,10):
for columns in tsvreader:
userid = 1
column1, column2, column3 = columns
if userid == int(column1):
print("userid:", userid,"result: ", int(column1), int(column2), int(column3))
userid += 1
每當我運行此代碼將輸出:
-- userid: 1 result: 1 3098 1
-- userid: 1 result: 1 508 1
-- userid: 1 result: 1 889 1
-- userid: 1 result: 1 802 0
-- userid: 1 result: 1 3800 0
這裏的問題開始。因爲我希望我的用戶ID加到了價值1。我的用戶ID將是2循環將再次啓動,並打印出像:
-- user id 2 result: ...
-- user id 2 result: ...
-- user id 2 result: ...
但我的代碼沒有做到這一點。有人知道爲什麼
請注意:userid 2在我的TSV文件中,所以這不是問題!
額外的信息:在我的TSV文件我有以下情況:
1 802 0
1 3800 0
2 7492 1
2 5235 0
我要輸出所有屬於userid1(802,3800等)的結果,在那之後循環必須繼續輸出userid2的所有結果(7492,5235等)。在後面的過程中,我想爲每個用戶ID存儲他們的結果。
太棒了!這正是我想要的,解釋非常有幫助!非常感謝! – Rotan075
你也可以告訴我我應該如何輸出每個user_id到一個單獨的csv/tsv文件?或者那是不可能的@mhawke – Rotan075
當然,這是可能的。在遍歷排序的數據時,會跟蹤當前用戶標識。打開一個CSV文件並開始向其寫入每一行。當用戶標識更改時打開一個新的CSV文件並寫入該文件。使用帶有用戶ID的字典作爲鍵可以幫助將列表中每個用戶的數據分組。然後迭代將每個數據寫入文件的字典的鍵。 Burhan Khalid的[答案](http:// stackoverflow。com/a/31538379/21945)使用defaultdict爲每個用戶分組數據 - 您可以將您的代碼關閉。 – mhawke