如何将嵌套的整数列表写入和读取到csv

时间:2019-04-05 17:52:52

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

我有一个多维矩阵作为python模型的数据输入。为此,我使用的是嵌套列表,这些列表保存在其他模型中,但也使用python。我的问题是如何将这些列表正确保存为csv文件以及如何正确导入它们。

嵌套列表如下:

test = [[[3, 16], [10, 12]], [[4, 2], [14, 6]]]

通过阅读其他示例,我尝试使用以下代码保存它们:

# Write CSV file
kwargs = {'newline': ''}
mode = 'w'
if sys.version_info < (3, 0):
    kwargs.pop('newline', None)
    mode = 'wb'

with open('../data/test.csv', mode, **kwargs) as fp:
    writer = csv.writer(fp, delimiter=',')
    writer.writerows(test)

给出如下输出:

"[3, 16]","[10, 12]"
"[4, 2]","[14, 6]"

看看格式,我问自己这是否真的是为更多维度列表编写文件的正确方法。 =>问题1:编写嵌套列表的正确方法是什么?

使用读取文件

# Read CSV file
kwargs = {'newline': ''}
mode = 'r'
if sys.version_info < (3, 0):
    kwargs.pop('newline', None)
    mode = 'rb'
with open('../data/test.csv', mode, **kwargs) as fp:
    reader = csv.reader(fp, delimiter=',')
    data_read = [row for row in reader]

有输出

[['[3, 16]', '[10, 12]'], ['[4, 2]', '[14, 6]']]

格式上的差异使我想到第二个问题: =>问题2:如何在读取文件时取回整数?

我相信这个问题不会那么困难,但是我刚刚开始使用python,所以我不确定如何调整代码。因此,非常感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

您的问题实际上与Python没有任何关系。 CSV格式不支持嵌套的数据结构(例如列表中的列表)。一种解决方案是使用编码来实现。例如JSON。另外,如果仅由Python程序读取数据,则可以使用python的pickle模块有效地对对象进行编码/解码。

注意:您可以为列表中的列表定义自己的CSV元编码。但是,随后您必须找出一种实现方案,并为读取序列化数据所需的任何语言编写解码器。使用JSON,protobufs或其他合适的编码要容易得多。

答案 1 :(得分:-1)

我以前已经制作了一个脚本,可以解决您的一些问题。

https://github.com/Yolo-gamer/CDM

在我的代码中,脚本保存数据有两种方式。

  1. 普通(作为字符串)
  2. 数据(具有数据类型的保存)

所有需要的是cdm.py文件与脚本位于同一文件夹中,然后使用import cdm

要获得帮助,请键入help(cdm),代码应会为您提供所需的所有信息。