将数组写入cs

2024-05-23 20:59:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我在2d数组(数据)中循环,然后使用循环的数组的不同片段填充字段。下面是示例代码:

with open('output.csv' , 'wb') as outcsv:
    headers = ['Field1', 'Field2', 'LongField']
    writer = csv.DictWriter(outcsv, headers)
    writer.writeheader()
    for i in range(numArrays):
        row = [{'Field1': data[i][:3],
                'Field2': data[i][3:5],
                'LongField': data[i][5:]}]
        writer.writerows(row)

我得到了除“LongField”之外的所有字段的期望输出,其中值的数量很大(数百个,甚至可能几千个),并且变化很大。 以下是我的输出结果:

^{pr2}$

这是因为我超过了我可以写入单元格的最大允许值吗?有没有办法让我把所有的实际值都写进单元格?在

任何帮助将不胜感激!在


Tags: csv数据代码示例datawith数组open
1条回答
网友
1楼 · 发布于 2024-05-23 20:59:16

我怀疑OP想打印所有的0,不管有多少。没有array(也没有)也没有省略号...

编辑: 参见@John的评论:

For anyone happening upon this in the future, numpy.savetxt() does what the OP wants without having to create the strings by hand.

猜测:

尝试','.join([str(_) for _ in data[i][5:]])

全部:

row = [{'Field1': data[i][:3], 'Field2': data[i][3:5], 'LongField':  ','.join([str(_) for _ in data[i][5:]])}]

Related to this answer.

帮助我们:

你用的是什么阵法?你能给我们看更多的代码吗?或告诉输出:type(data[0])

编辑

OP澄清了什么样的阵列以及它的长度:

这是一个numpy.array(或ndarray;相同str处理的一维)

它有2984长。在

显然,numpy.array的str版本将在数组有1000个或更多元素时截断除前3个和最后3个元素之外的所有元素

999个元素:

^{pr2}$

1000个元素:

str(numpy.array(range(1001)))
>>'[   0    1    2 ...,  998  999 1000]'

所以我认为我最初的建议应该有效,强迫它使用你想要的字符串表示。我认为CSV DictWriter应该负责引用。在

','.join([str(_) for _ in numpy.array(range(2987))])

编辑

解释我的答案:

所以你没有给DictWriter一个字符串,它必须推断字符串。我假设DictWriter将使用Python^{}函数。如文档所述,str函数将:

Return a string containing a nicely printable representation of an object.

我想numpy开发人员认为一个array包含超过999个元素的array非常“可打印”

所以在1000以上,它们可能有__str__函数返回一个“summated”版本,它只显示前3个元素和最后3个元素。在

不必让DictWriter或str给你一个字符串,你可以创建你想要的字符串。我相信您需要的字符串只是数组中所有元素用逗号分隔,这就是代码的作用:

','.join([str(_) for _ in [1,2,3]])
  • ','.join()将所有元素“串联”在逗号上;元素必须是字符串
  • [str(_) for _ in [1,2,3]]将单个元素转换为字符串(join工作所必需)

相关问题 更多 >