【问题标题】:Python dictionary to csv excelPython字典到csv excel
【发布时间】:2017-07-02 14:23:00
【问题描述】:

我尝试从 python 中的字典中获取 csv。

我可以创建一个 csv 文件并将我的字典放入其中。

问题是,当我用 excel 打开文件时,标题和值在一列中,但我希望所有键和所有值都在单独的列中。

例如:

      column1 column2 column3        column4
row 1 "name"   "temp" "tempeinheit"  "Druck"
row 2 "test"   24      "C"             0.1 

这是下面的代码。

dict= [{"name" : "test", "temp" : 24, "tempeinheit": "C", "druck" : 0.1,    "druckeinheit": "Pa"},{"name" : "benni", "temp" : 24, "tempeinheit": "C", "druck" : 0.1, "druckeinheit": "Pa"}]
with open("C:\\test#\\test.csv","w",newline='') as csvfile:

writer = csv.writer(csvfile,dialect="excel-tab")

for row in dict:
    if count == 0:
        header=row.keys()
        writer.writerow(header)
        count=+1
    writer.writerow(row.values())

更新:

我只是将字典转换为 2 个列表。一个用于键,一个用于数据,我使用 writer.writerow(Data) 编写它们。

另一件事是,我使用 excel 2013,对于新列,它不是 delimiter=",",而是 delimiter=";"。所以 ”;”告诉 excel 将数据放入新列。

感谢您的帮助。

【问题讨论】:

  • 你的dict 不是字典,它是字典列表
  • 另外,不要将变量命名为 dict - 您正在覆盖标准字典类型
  • 是的,我知道那是一个列表。但即使在那种情况下,我也想像我在帖子中描述的那样保存它
  • “问题是当我用 excel 打开文件时,标题和值在一列中”:这主要是 excel 如何解析你的 csv 文件的问题——而且 excel 可能很烦人(当涉及到 csv 文件时,实际上想到了“braindead”。也许你应该试试excel(不是'excel-tab')方言。此外,您应该以wb 模式打开文件,并可能不理会newline

标签: python excel csv


【解决方案1】:

我尝试运行您的代码,发现以下问题。

  • 导入 CSV 错误
  • 当您尝试通过代码写入文件时,文件已关闭。
  • 计数变量未初始化。

我在这里添加了我的工作代码。如果您遇到任何问题,请告诉我。

import csv
dict= [{"name" : "test", "temp" : 24, "tempeinheit": "C", "druck" : 0.1,    "druckeinheit": "Pa"},
    {"name" : "benni", "temp" : 24, "tempeinheit": "C", "druck" : 0}]
with open("try.csv","a") as csvfile:
    writer = csv.writer(csvfile,dialect="excel-tab")
    count = 0
    for row in dict:
        if count == 0:
            header=row.keys()
            writer.writerow(header)
            count=+1
        writer.writerow(row.values())

【讨论】:

  • 您好,谢谢,但计数初始化只是复制粘贴错误,该文件适用于我的 c:\\try.csv。并且导入我也忘记发布了,抱歉。
【解决方案2】:

你可以像 pandas 一样尝试:

import pandas as pd

d = [{"name" : "test", "temp" : 24, "tempeinheit": "C", "druck" : 0.1,    "druckeinheit": "Pa"},
     {"name" : "benni", "temp" : 24, "tempeinheit": "C", "druck" : 0.1, "druckeinheit": "Pa"}] 

df = pd.DataFrame(d)

df = df[['name', 'temp', 'tempeinheit', 'druck','druckeinheit']]
df.to_csv('filename')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多