【问题标题】:Writing a Python list into a single CSV column将 Python 列表写入单个 CSV 列
【发布时间】:2012-01-02 04:45:17
【问题描述】:

我有一个数字列表,我想将它们放在 .csv 文件的单列中。下面的代码将值写入单行。如何更改代码以便 Python 将每个值写入单独的行?谢谢。

        with open('returns.csv', 'wb') as f:
            writer = csv.writer(f)
            writer.writerow(daily_returns)

【问题讨论】:

  • ISTM 仅包含列的 CSV 文件不需要 csv.writer。只需使用f.writelines([ret + '\n' for ret in daily_returns])
  • @RaymondHettinger:也许这有点牵强,但ret 值可能包含需要引用的'\n' 字符或分隔符。

标签: python csv writer


【解决方案1】:

使用Python3,以w模式打开文件:

with open('returns.csv', 'w') as f:
    writer = csv.writer(f)
    for val in daily_returns:
        writer.writerow([val])

使用Python2.6+,以wb模式打开文件:

with open('returns.csv', 'wb') as f:
    writer = csv.writer(f)
    for val in daily_returns:
        writer.writerow([val])

【讨论】:

  • 我认为公开电话应该只是open('returns.csv', 'w') as f:
  • 谢谢。我尝试了相同的代码,但我的最后一行读取 writer.writerow(val) 并且我收到错误“预期序列”。我没有意识到我需要括号。
  • @Casey:我倾向于同意,但既然 OP 写了它,我想他知道他在做什么。
  • @unutbu,Casey:见stackoverflow.com/questions/1170214/… ... OP 显然已经阅读了文档 :)
【解决方案2】:

仅作记录:

我正在使用 Python 3.2,我只能让以下工作

with open('returns','w')as f:
    writer=csv.writer(f,lineterminator='\n')
    for val in returns:
        writer.writerow([val])

【讨论】:

  • 在 Python 3 中,您应该使用 newline='' 参数打开文件,如 the docs 中所述。
【解决方案3】:

替代解决方案:假设 daily_returns 是您希望写入 CSV 文件中的列的列表的名称,以下代码应该可以工作:

with open('return.csv','w') as f:
    writer = csv.writer(f)
    writer.writerows(zip(daily_returns))

【讨论】:

  • 这是在 Python 3.x 中唯一适合我的解决方案。
【解决方案4】:

对于编写单列,我建议避免使用csv 命令,而只使用带有str.join() method 的普通python:

    with open('returns.csv', 'wb') as f:
        f.write("\n".join(daily_returns))

【讨论】:

  • 完美运行!我用'w'代替'wb'。谢谢!
猜你喜欢
  • 2018-04-02
  • 2021-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-24
  • 2014-09-21
  • 2016-06-30
相关资源
最近更新 更多