我一直在爲這個任務苦苦掙扎了很長時間,在這裏我正在尋求一些關於如何解決我的問題的指導。使用2個CSV文件和詞典構建字符串
爲了給出一些上下文,我有大約60'000個文件,我試圖重新組織。我有2個CSV文件要使用。
file1.csv
id | path | objectid | image path
1 | path/to/file1 | 4123 | http://url./image1.jpg
2 | path/to/file2 | 5111 | http://url./image2.jpg
...(about 60'000 rows)
file2.csv
objectid | categoryid | termid | Description | parent
4123 | 8302 | 14 | Category1 | 10
4123 | 5123 | 66 | Category2 | 14
所以第二個文件可以有相同的OBJECTID的(file1中有隻有1%行)多行。這使得使用父 - > termid創建的子類可用。 Categoryid只是該類別名稱的標識,但父級字段正在查看termid以確定它是父級。
所以我想要實現的是以下幾點:從file1.csv獲取文件路徑,通過它的objectid找到file2.csv中的所有行,使用相同的objectid,根據父代號對它們進行排序第一個),並在同一行上將正確順序中的每個描述(用/分隔)預先加入到file1的現有路徑中。最終,它會從同一行下載一個圖像,並將其移入文件系統,但我正在努力獲取文件名。
下面的代碼是我現在所擁有的:
import csv
main_dict = {}
with open('files1.csv', newline='', encoding='utf-8') as f:
reader = csv.reader(f)
for row in reader:
filepath = row[1]
objectid = row[2]
imagepath = "http://url.com" + row[3] + "_0001.jpg"
key = row[2]
main_dict[key] = row[1]
#print(main_dict)
second_dict = {}
with open('file2.csv', newline='', encoding='utf-8') as f:
reader = csv.reader(f)
for row in reader:
key = row[0]
second_dict[key] = row[3]
print(second_dict)
for key in main_dict:
if key in second_dict:
print(second_dict[key] + '/' + main_dict[key])
我可能會在完全錯誤的方向與此所以任何幫助下打算將不勝感激。
P.S我使用Python3.5
非常感謝!
歡迎StackOverflow上。請閱讀並遵守幫助文檔中的發佈準則。 [在主題](http://stackoverflow.com/help/on-topic)和[如何提問](http://stackoverflow.com/help/how-to-ask)適用於此處。堆棧溢出是針對您的代碼可證明的問題,而不是推測性的實施幫助。你可能想CodeReview.StackExchange.com – Prune
這聽起來像一個非常數據庫的解決方案,可能數據庫比你讀入內存的csv文件更好的選擇? –
也許......但是這是一次性的事情,稍後我不需要再做這件事......我確實有數據庫中的數據,儘管... – kokozz