将列表写为tsv文件中的列

时间:2018-07-04 17:30:53

标签: python python-2.7 list csv

我希望将三个列表存储在tsv文件中,如下所示:

 1 a yes
 2 b no 
 3 c yes

列表:

list1 = [u'1', u'2', u'3']
list2 = [u'a', u'b', u'c']
list3 = [u'yes', u'no', u'yes']

以下代码使用csv writer方法存储它:

rowlists = zip(list1, list2, list3)
writer = csv.writer(outfile, delimiter='\t')
for row in rowlists:
     writer.writerow(row)

但是,由于tsv和csv SyntaxError: Got u'"\t1.0'之间的格式差异,此方法在以后的处理中引起一些错误。因此,有没有使用csv编写器的另一种方法呢? 我正在使用python 2.7。

任何帮助将不胜感激。 谢谢,

2 个答案:

答案 0 :(得分:0)

如果您不想使用编写器,则可以手动执行。但是请注意,管理包含定界符的列的引号会有些困难:

最简单的方法:

numItems = len(l1)
outputStr = ''

for i in range(0,numItems): 
  outputStr += l1[i] + "\t" + l2[i] + "\t" + l3[i] + "\n"


with open('output.tsv', "w") as outputter:
  outputter.write(outputStr)

如果col数据中还包含一个'\ t',则必须搜索每个列表项并将其用引号引起来...可以在必要时进行更新。

如果存在unicode字符,则可以在打开文件时在写入操作中对其进行定义。

希望有帮助

答案 1 :(得分:0)

csv.writer需要传递一个打开的文件对象

with open(outfile, 'w+') as f:
    writer = csv.writer(f, delimiter='\t')
    for row in rowlists:
        writer.writerow(row)