我有一个元组,其中一个元素只是一个字符串而另一个是一个列表('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编写器时尝试了分隔符,但它不起作用。任何想法
答案 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中打开此功能,则您需要将分隔符更改为逗号,','。