【问题标题】:Export Dictionary with Lists to CSV将带有列表的字典导出到 CSV
【发布时间】:2016-09-10 19:06:13
【问题描述】:

编辑:在我试图缩小我的问题范围时,我可能过于简单化了,这使得它更难回答。让我再尝试一次。假设字典是:

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

我希望将该字典输出到一个 csv 文件,该文件将在三列中表示该信息:键列、标题列和正文列。由于以下原因,尝试使用下面提到的答案失败。

希望这更清楚一点。


我正在抓取一些中文新闻网站并尝试将结果输出到 csv 文件中。抓取后,字典是结构化的:

uniqueID : [headlines, body]

每个故事。我正在尝试输出到最终显示为:

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")

当然,我也愿意接受我构建数据的方式是错误的建议。

感谢您的任何想法。

【问题讨论】:

  • 您能否显示整个代码或至少一个stackoverflow.com/help/mcve。没有它,任何人都很难测试他们的解决方案,甚至真正理解您的问题。
  • 我投票结束这个问题,因为问题太模糊了。
  • 唯一 ID 来自哪里?您如何获得头条新闻与故事主体?你真的认为在你的 csv 文件中使用/ 分隔符是个好主意吗?如果故事或正文中有那个字符怎么办?
  • 抱歉,显然过于简化了。我编辑了上面的问题,希望它更清楚一点。

标签: python python-2.7 csv dictionary web-scraping


【解决方案1】:

使用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

【讨论】:

    【解决方案2】:

    我最终通过将数据重组为列表来解决这个问题,所以:

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

    那我就用了

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

    我不确定在这种情况下使用字典、列表或两者的组合是否有优势。在这种情况下,切换到列表似乎可行,尽管我对 Daniel 建议的解决方案有点好奇。

    【讨论】:

    • 很高兴看到你解决了它。仅供参考:最好在 Stackoverflow 上投票或接受有帮助的答案,而不是提交您自己的答案 :) 祝你好运!
    • 谢谢!正如这个问题中的所有内容都清楚的那样,我仍在学习我的网站(和 python....)
    • 一切都好。您应该能够投票并接受答案:stackoverflow.com/help/someone-answers
    猜你喜欢
    • 1970-01-01
    • 2021-04-26
    • 2017-02-11
    • 2017-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-15
    • 1970-01-01
    相关资源
    最近更新 更多