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

Python 将以空格分隔的行写入csv文件,将不同块中的所有元素,python,csv,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.

我有一个元组,其中一个元素只是一个字符串,另一个是一个列表('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编写器时尝试了分隔符,但它不起作用。任何想法

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


使用序列调用
writerow()
,以获得多个列。

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

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中打开此文件,则需要将分隔符更改为逗号“,”。

您可能希望分隔符为“,”。Excel用逗号分隔csv中的单元格内容。Danny,这根本不是他的问题。实际上,csv文档的分隔符是什么并不重要。通常使用制表符、管道、分号、冒号和句点。python
csv
模块可以很好地处理所有这些问题。@Wilduck他对块的解释令人困惑。听起来他说的是Excel单元格,Excel只支持csv中的逗号。Danny,很好。很抱歉教训你,我只是假设问题出在输出上,而不是他用来打开输出的程序。@Danny yea我指的是excel中的单元格很抱歉混淆我知道你在做什么,但是元组的列表部分长度不同有时它的大小可能是1或100万,我如何在[1] [x]@GregBrown检查我的答案,将主机名
tup[0]
插入IP列表的开头
tup[1]
outputwriter = csv.writer(open('output.csv', 'w'), delimiter = ' ')
for tup in in_tup:
    inputList = [tup[0]]
    inputList.extend(tup[1])
    outputwriter.writerow(inputList)