【问题标题】:how to write to csv in python?如何在python中写入csv?
【发布时间】:2018-08-22 18:01:20
【问题描述】:

我有一排:

row = {'A':'valueA', 'B':'valueB', 'C':'valueC'}

基本上我想打开一个新的csv 文件并将每个值写入其列中,例如

 ---------------------------
|   A     |  B     |   C    |
 ---------------------------
|  ValueA | ValueB | ValueC |
 ---------------------------

我正在这样做:

def OandWtonew(filename, row):
with open('Ouput1.csv', 'wt') as csvfile:
    fileout = csv.writer(csvfile, delimiter=' ', quotechar='|', quoting=csv.QUOTE_MINIMAL)
    fileout.writerow(row)

但我得到的输出是:

 --------------------------------------------
|   A           |  B           |  C          |
 --------------------------------------------
|  'A':'valueA' | 'B':'valueB' | 'C':'valueC'|
 --------------------------------------------

非常感谢所有回复:)

【问题讨论】:

  • 你为什么不使用 DictWriter?
  • @coldspeed 题外话,我只知道 100k !!恭喜。我看到你在 Google 找到了一份工作(你不是在找工作吗?)
  • 看起来你应该使用csv.dictwriter而不是csv.writer
  • 我看不出您是如何使用该代码获得该输出的。
  • @JoeIddon 谢谢!还有,是的,实习。几个月前,事实上。实际上,我已经完成了实习,所以我需要更新那个标题。谢谢提醒!

标签: python file csv


【解决方案1】:

您可以使用pandas.DataFrame.to_csv() 轻松写入 csv:

import pandas as pd

row = {'A':'valueA', 'B':'valueB', 'C':'valueC'}

#Convert dictionary to a pandas dataframe
df = pd.DataFrame().append(row, ignore_index=True)

# check output
df
    A       B       C
0   valueA  valueB  valueC

# Save to a csv file
df.to_csv('Ouput1.csv',index=False)

【讨论】:

    【解决方案2】:

    由于数据是字典,csv.DictWriter() 可能是最直接的方法。 只需确保标头值列表按原始顺序排列,在这种情况下sorted() 可能是最简单的:

    with open('Ouput1.csv', 'wt') as csvfile:
        fieldnames = sorted(row.keys())  # needs to be the first line in correct order
        writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
        writer.writeheader()
        writer.writerow(row)             # writes corresponding value for key in header
    

    【讨论】:

      【解决方案3】:

      row 的类型为 dict。来自documentation

      import csv
      with open('names.csv', 'w') as csvfile:
          fieldnames = ['first_name', 'last_name']
          writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
      
          writer.writeheader()
          writer.writerow({'first_name': 'Baked', 'last_name': 'Beans'})
          writer.writerow({'first_name': 'Lovely', 'last_name': 'Spam'})
          writer.writerow({'first_name': 'Wonderful', 'last_name': 'Spam'})
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多