python writerow([variable])而不是实际的行

时间:2016-04-02 20:09:20

标签: python csv

f.writerow([field1, field2, field3, field4, field5, field6, field7, field8, field9, field10, field11, field12, field13, field14, field15, field16, field17, field18, field19, field20, field21, field22])

我想用以下内容替换上面的内容:

f.writerow([hrow])

字段的数量可以根据其他内容而改变,我想只是将字段附加到变量中,如果它们是否参与。当我打印hrow时,我得到了这个:

field1, field2, field3, field4, field5, field6, field7, field8, field9, field10, field11, field12, field13, field14, field15, field16, field17, field18, field19, field20, field21, field22

但我猜它的格式不正确,因为它将它全部打印到第一行和第一列的一个单元格中,但每个都应该是一个标题。我假设在这种情况下你不能使用字符串变量。但是有办法做到这一点吗?

编辑:使用f.writerow(hrow)后的结果

enter image description here

更多信息:

enter image description here

编辑:已解决。

将声明更改为此

hrow = (args.sfdcfield1).split()

并附加对hrow有效的args。 然后

f.writerow(hrow)

的工作。

感谢丹尼尔罗斯曼。 我会按照自己的意愿工作,优化代码。 (它的方法很长,但它有助于我学习)

:)

1 个答案:

答案 0 :(得分:0)

您的问题有点难以理解,但我认为您的意思是hrow变量中包含值列表,并且您希望将它们全部写为CSV行中的单个字段。在这种情况下,您只需传递列表而不将其包装在另一个列表中:

f.writerow(hrow)

修改

您不应该通过字符串连接来构建hrow。你应该把它作为一个列表,并将每个元素附加到它。

hrow = []
if ...whatever...:
    hrow.append(value)

请注意,即使我们看不到代码的其余部分,它看起来很奇怪非常。你不太可能需要大量的变量来调用像idxsfdcfield21这样的东西;您更有可能需要一个名为idxsfdc的列表,并再次将每个元素附加到它。而且你可以通过简单地循环遍历args来避免数百行代码。