我意識到回答這個問題的信息可能已經在這裏,但作爲一個python newby我一直試圖拼湊信息幾個星期了,我打了有些麻煩。在python中使用dictreader加入兩個CSV文件
這個問題Python "join" function like unix "join"答案如何輕鬆地在兩個列表上做一個連接,但問題是dictreader對象是可迭代的而不是直接的列表,這意味着有一個額外的複雜層次。
我基本上是在使用dictreader對象尋找兩個CSV文件的內連接。下面的代碼我到目前爲止:
def test(dictreader1, dictreader2):
matchedlist = []
for dictline1 in dictreader1:
for dictline2 in dictreader2:
if dictline1['member']=dictline2['member']:
matchedlist.append(dictline1, dictline2)
else: continue
return matchedlist
這是給我的if語句錯誤,但更重要的是,我似乎不能夠訪問該字典的[「成員」]元素在可迭代內,因爲它表示它沒有屬性「getitem」。
有沒有人有任何想法如何做到這一點?作爲參考,我需要將列表保存爲迭代列表,因爲每個文件都太大而不適合內存。計劃是在另一個for循環中控制整個函數,每次僅爲它提供幾行代碼以迭代。因此,它將讀取左手文件的一行,迭代整個第二個文件以查找匹配並連接兩行的成員字段,類似於SQL連接語句。
感謝您提前提供任何幫助,請原諒我的任何明顯錯誤。
那重盟友非常感謝,作品精美!我認爲我的一個問題是,在將它們傳遞給函數之前,我正在打印這兩個dictreaders,在函數讀取它之前似乎已經耗盡了迭代器...現在我只需要設法重置它。 感謝您的更新字典的提示,這是一個更好的方法來做到這一點! – analystic 2012-02-29 13:44:26
@analystic很高興有幫助。你能否將答案標記爲已接受? – 2012-02-29 20:00:23
現在我有足夠的聲望,完成了! – analystic 2012-03-01 23:19:23