将由空格分隔的行写入csv文件中的不同块中的所有元素

时间:2011-11-21 15:56:21

标签: python csv

我有一个元组,其中一个元素只是一个字符串而另一个是一个列表('x',['y','z']),我想将元组输出到一个csv文件中同一行上的不同元素,但不同的块。

这是我到目前为止所拥有的

 outputwriter=csv.writer(open('output.csv','wb'), delimiter=' ')
 for tup in in_tup:
    print (tup[0]+' '.join('%s' %x for x in tup[1]))
    outputwriter.writerow(tup[0]+' ' +' '.join('%s' %x for x in tup[1]))

当我第一次打印元组时,输出就是这个

xxxx.com 164.44.xx.xx 164.44.xx.xx 164.44.xx.x

...

但是当我将它输出到csv时,我会在符号块“A1”中获得所有文本,依此类推。我打开csv编写器时尝试了分隔符,但它不起作用。任何想法

3 个答案:

答案 0 :(得分:2)

outputwriter = csv.writer(open('output.csv', 'w'), delimiter = ' ')
for tup in in_tup:
    inputList = [tup[0]]
    inputList.extend(tup[1])
    outputwriter.writerow(inputList)

答案 1 :(得分:0)

此行为是正确的:您只向每行添加一个元素(这是通过连接所有元组创建的长字符串)。

使用序列调用writerow()来获取多列。

答案 2 :(得分:0)

您无需加入列表中的不同元素。您正在使用的writerow方法需要一个可迭代的(如列表或元组),并将每个元素放在它自己的列中,由您指定的任何分隔符分隔。如果您确实想使用空格作为分隔符,则以下代码应该起作用:

outputwriter = csv.writer(open('output.csv', 'w'), delimiter = ' ')
for tup in in_tup:
    outputwriter.writerow([tup[0], tup[1][0], tup[1][1]])

但是,如果您要按照Danny的建议在excel中打开此功能,则您需要将分隔符更改为逗号,','。