2016-05-14 29 views
1

編輯:在嘗試縮小我的問題時,我可能會過度簡化,導致難以回答。讓我再嘗試一次。假設詞典是:將列表導出爲CSV格式的字典

holder = {'key1':['headline1', 'body1'], 'key2':['headline2', 'body2']} 

我期待該字典到CSV文件,將代表三列的信息輸出:鍵列,標題欄,身柱。下面提到的答案試圖做到這一點失敗了,原因如下。

希望這更清楚一點。


我颳了一些中國新聞網站,並試圖將結果輸出到CSV文件。刮字後,字典的結構如下:

uniqueID : [headlines, body] 

每個故事。我試圖輸出到CSV,最終寫着:

uniqueID1/headlines1/body1 
uniqueID2/headlines2/body2 
uniqueID3/headlines3/body3 

每個那些在不同的列(所以基本上三列,儘可能多的行,因爲我有故事)。

我嘗試使用this question的解決方案,但除了翻轉X軸和Y軸(我知道如何修復)之外,它還將每個標題/故事中的每個角色分成不同的條目並打破角色編碼。由於我不知道如何解決這些問題,我有點卡住了。

如果是有幫助的還是相關的,我編碼字符是這樣的:自然

head_fixed = str(headline) 
    soup = BeautifulSoup(head_fixed, 'lxml') 
    good_output = soup.text.decode("unicode-escape").encode("utf-8") 

,我也持開放的態度,我正在構建數據的方式是錯誤的建議。

謝謝你的任何想法。

+1

你可以顯示整個代碼或至少一個http://stackoverflow.com/help/mcve。任何人都難以測試他們的解決方案,甚至沒有它就能真正理解你的問題。 – Keatinge

+0

我投票結束這個問題作爲題外話,因爲問題太模糊。 – martineau

+0

唯一ID來自哪裏?你如何得到頭條新聞與故事主體?你真的認爲使用'/'分隔符爲你的csv文件是一個好主意 - 如果故事或正文中包含該字符,該怎麼辦? – martineau

回答

0

這是很容易與pandas(您可能需要pip install pandas):

import pandas as pd 

holder = {'key1':['headline1', 'body1'], 'key2':['headline2', 'body2']} 

df = pd.DataFrame(holder) 

df.transpose().to_csv('output.csv', header=None) 

# output.csv: 
# key1 headline1 body1 
# key2 headline2 body2 
0

我最終通過重組數據列表解決這個問題,所以:

holder = [[key1, headline1, body1], [key2, headline2, body2]] 

然後我剛剛使用

with open('output.csv', 'wb') as f: 
    writer = csv.writer(f) 
    writer.writerows(holder) 

我不確定我們是否有優勢字典,列表或這兩種情況的組合。在這種情況下,切換到列表似乎可行,但我對Daniel提出的解決方案有點好奇。

+0

很高興看到你解決了它。僅供參考:在Stackoverflow上更好的做法是投票或接受幫助的答案,而不是提交自己的答案:)祝你好運! – Daniel

+0

謝謝!這個問題的一切都很清楚,我仍然在網站上學習(和python ....) – mweinberg

+0

這一切都很好。你應該能夠投票並接受答案:http://www.stackoverflow.com/help/someone-answers – Daniel