【发布时间】:2018-06-03 06:42:01
【问题描述】:
我想将 Python 字典列表写入文件。但是,我需要字典(和其中的列表)来保留字典,即当我加载文件进行处理时,我希望它们使用字典而不必使用字符串。
这是我将数据写入字符串的示例代码,有没有办法保留原始 Python 数据结构(在实际代码中,列表数据有数百个字典,每个字典可能有数百个列表作为值)。我不能简单地腌制数据,原因有很多(其中一个是文件需要是人类可读的)。
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)
【问题讨论】:
-
那是不可能。您写入或读取文件的所有内容都是
string。你必须想出一个聪明的方法来从dict到string,反之亦然。或者使用某种库。 -
您需要某种形式的序列化,例如
pickle或json. -
@Ev.Kounis 这有点牵强。你如何定义字符串?对我来说,这是人类可读的字符序列。但是,文件处理字节。您可以将任何字节序列写入文件,例如使用
pickle创建的序列化字典。 -
EV。 Kounis:您写入或读取到文件的所有内容都是字节序列,而不是文本字符串。而且Python有几种方法可以将其数据结构序列化和反序列化为字节序列,这些方法足够聪明。
标签: python csv dictionary pickle jsonpickle