2016-05-14 67 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