Python:即使在指定分隔符后,csv writer也会在错误的位置分隔

时间:2015-09-23 21:11:37

标签: python csv tsv tab-delimited

我正在尝试将这样的列表写入CSV文件:

['ABC','One,Two','12']
['DSE','Five,Two','52']

到这样的文件:

ABC   One,Two   12
DSE   Five,Two   52

基本上,在''内部写入任何内容。 但是,它将One和Two分成不同的单元格,并在第一个单元格中将ABC与One合并。

我的部分内容:

out_file_handle = open(output_path, "ab")
writer = csv.writer(out_file_handle, delimiter = "\t", dialect='excel', lineterminator='\n', quoting=csv.QUOTE_NONE)    
output_final = (tsv_name_list.split(".")[0]+"\t"+key + "\t" + str(listOfThings))
output_final = str([output_final]).replace("[","").replace("]","").replace('"',"").replace("'","")
output_final = output_final.split("\\t")
print output_final #gives the first lists of strings I mentioned above.
writer.writerow(output_final)

第一个输出_最后一行给出

ABC  One,Two  12
DSE  Five,Two  52

2 个答案:

答案 0 :(得分:2)

使用csv模块只是起作用,因此您需要更具体地说明哪些因素可以说明元素在细胞中流血。例如,使用(现在已经过时)Python 2.7:

import csv

data_lists = [['ABC','One,Two','12'],
              ['DSE','Five,Two','52']]

with open("out.tsv", "wb") as fp:
    writer = csv.writer(fp, delimiter="\t", dialect="excel", lineterminator="\n")
    writer.writerows(data_lists)

我收到了一个out.tsv文件:

dsm@winter:~/coding$ more out.tsv 
ABC One,Two 12
DSE Five,Two    52

>>> out = open("out.tsv").readlines()
>>> for row in out: print repr(row)
... 
'ABC\tOne,Two\t12\n'
'DSE\tFive,Two\t52\n'

这是应该的。现在,如果您使用制表符分隔的这些行,并且出于某种原因使用逗号作为分隔符将它们分开,当然,您会认为有两列,一列{{1}和ABC\tOne一个。但这很愚蠢。

答案 1 :(得分:0)

您已设置了CSV编写器,但由于某种原因您完全忽略它并尝试手动输出这些行。那是毫无意义的。使用可用的功能。

writer = csv.writer(...)
for row in tsv_list:
    writer.writerow(row)