【问题标题】:Python 3.3 Write dictionary data into CSVPython 3.3 将字典数据写入 CSV
【发布时间】:2018-06-25 22:49:09
【问题描述】:

在 windows 7 32 位上使用 Python 3.3.5,我创建了一个包含 14 个键:值对的字典,示例如下 -

{'Name': 'ABC XYZ', 'Mobile': '1234567890', key3: value3 等等}

我正在尝试以以下格式将此数据写入 CSV - 一行中的所有键及其下方的所有值 -

姓名、手机、key3

ABC XYZ, 1234567890, value3 等等 14 个键值对

我正在使用的代码 -

with open("Parsed_CSV.csv", "w") as f:  
            w = csv.write(f)
            w.writerow(my_dictionary.keys())
            w.writerow(my_dictionary.values())

我收到错误 -

  w = csv.write(f)
TypeError: must be str, not _io.TextIOWrapper

我也尝试过运行下面的代码 -

with open('Parsed_CSV.csv', 'w') as f:  
            w = csv.DictWriter(f, my_dictionary.keys())
            w.writeheader()
            w.writerow(my_dictionary)

但这也给了我错误 -

w = csv.DictWriter(f, my_dictionary.keys())
AttributeError: '_io.TextIOWrapper' object has no attribute 'DictWriter'

如何使用 DictWriter?它是否带有“csv”模块?

有人可以帮我理解这里的问题是什么以及如何以所需的格式编写 CSV 吗?

谢谢,

卫生巾。

【问题讨论】:

    标签: python python-3.x csv dictionary export-to-csv


    【解决方案1】:

    在 python 3.3 中可以轻松使用 pandas 将字典数据写入 csv

    import pandas as pd
    sales = {'account': ['Jones LLC', 'Alpha Co', 'Blue Inc'],
             'Jan': [150, 200, 50],
             'Feb': [200, 210, 90],
             'Mar': [140, 215, 95]}
    df=pd.DataFrame.from_dict(sales)
    df.to_csv('check.csv')
    

    以上是在python2中完成的,但我认为它可以很容易地转换为python3

    【讨论】:

    • 嗨,对我来说,在 Python 3.3 上安装 pandas 模块已经存在问题。每次我尝试使用“pip install pandas”安装它时,我都会收到以下错误 - “命令“python setup.py egg_info”失败,c:\users\sanket~1\appdata\local\temp\pip-中的错误代码为 1 build-88pyt9\pandas\"
    • try "pip3 install pandas" 我认为应该可以解决问题。
    • 不走运。再次出现错误 - RuntimeError: Python version 2.7 or >= 3.4 required。命令“python setup.py egg_info”在 c:\users\sanket~1\appdata\local\temp\pip-build-qtv6sr\pandas\ 中失败,错误代码为 1
    • 嗯。试试这个“python3 -m pip install --user numpy scipy pandas”我通过“pip3 install pandas”安装了pandas,它对我有用。也尝试升级你的点子
    【解决方案2】:

    确保您正在导入 csv 模块并且您没有覆盖名称。 csv 应该是 'module' 对象,但根据您的错误,csv 似乎是 '_io.TextIOWrapper' 对象。这表明您在代码中的其他位置覆盖了名称 csv

    以下应该可以正常工作。

    import csv
    my_dict = {'fieldname': 'value', 'another field': 'another value'}
    with open('myfile.csv', 'w') as f:
        writer = csv.DictWriter(f, fieldnames=list(my_dict.keys()))
        writer.writeheader()
        writer.writerow(my_dict)
    

    【讨论】:

    • 谢谢!你的建议奏效了。我在其他地方使用相同的 csv...
    【解决方案3】:

    试试这个:

    File = open('your_csv_file.csv', 'wb+')
    dictionary = {'Name':'abc', 'Class':'xyz', 'Section':'A'}
    File.write(dictionary.keys())
    File.write(dictionary.values())
    

    【讨论】:

      【解决方案4】:

      如果 my_dict 是你的字典,那么

      df = pd.DataFrame(my_dict.items(), columns=list(my_dict.keys()))    
      df.to_csv('df.csv')
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-05-15
        • 1970-01-01
        • 1970-01-01
        • 2018-06-17
        • 2012-11-04
        • 2018-03-19
        • 2016-03-01
        • 2015-06-06
        相关资源
        最近更新 更多