python - 如何将Python字典写入文件而不使其成为字符串?

标签 python csv dictionary pickle jsonpickle

我想将 Python 字典列表写入文件中。但是,我需要字典(以及其中的列表)保留字典,即当我加载文件进行处理时,我希望它们使用字典而不必使用字符串。

这是我将数据写入字符串的示例代码,有没有办法保留原始Python数据结构(在实际代码中,列表数据有数百个字典,每个字典可能有数百个列表作为值)。由于多种原因(其中之一是文件需要人类可读),我无法简单地 pickle 数据。

import csv
import pandas as pd

def write_csv_file(data, iteration):
    with open('%s.csv' % 'name', 'wb') as data_csv:
        writer_data = csv.writer(data_csv, delimiter=',')
        for d in data:
            writer_data.writerow([iteration] + [d])


data = [{'a':1, 'b':2}, {'e':[1], 'f':[2,10]}]
iteration = 1
write_csv_file(data, iteration)

目前我使用 pandas 按以下方式读取数据文件来处理数据。

d = pd.read_csv('name.csv')
d = pd.DataFrame(d)

最佳答案

只需使用 pickle 而不是 CSV 将数据写入文件 https://docs.python.org/3/library/pickle.html

import pickle

def write_csv_file(data):

    with open('%s.pickle' % 'name', 'wb') as data_file:
          pickle.dump(data, data_file)

Pickle 将正确序列化并恢复大量数据类型,包括开箱即用的日期时间和大多数用户定义的类。

但是,如果您需要使用第三方工具手动编辑文件,或者希望其易于人类阅读,那么它可能不是最佳选择。

如果您只需要数字、无、 bool 值、列表和字典,并且更喜欢人类可读的文本文件,那么 JSON 可能是一个不错的选择。 Python 的 json 模块使用与 picle 相同的接口(interface),通过 dumpload 可调用函数来写入和读取文件。在上面的代码片段中,只需将 pickle 替换为 json ,它就可以与规定的数据类型相同地工作。此外,检查文档,以便 json 序列化输出用良好的缩进填充,以便真正可读:https://docs.python.org/3/library/json.html

关于python - 如何将Python字典写入文件而不使其成为字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47910532/

相关文章:

python - 我使用 sympy 绘制了一个隐式函数。然而,情节看起来并不像曲线

python - 为什么我的查询无法使用 RDFlib 运行

python - 在 Pandas 的一列中切片字符串

c# - 格式化和获取缺失数据

java - 如何使用 Gson API 提取复杂嵌套 json 结构的特定键值对

python - 并行化字典理解

python - 在python中使用数据内容作为列创建表

Python3 configparser 首先参数必须是字节或字节元组,而不是 str

sql - Oracle:分割分隔字符串并选择大于输入日期的日期

python - 将元组作为值附加到字典中的现有键