Python:即使指定了分隔符,csv writer也会在错误的p处进行分隔

2024-09-19 20:42:16 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

到这样的文件:

^{pr2}$

基本上,将“”中的任何内容写入单元格。 但是,它将一个和两个拆分为不同的单元,并将ABC与第一个单元中的一个合并。在

我剧本的一部分:

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)

第一个输出\u最后一行给出

ABC  One,Two  12
DSE  Five,Two  52

Tags: 文件csvoutputoutonereplacefile单元
2条回答

您已经设置了CSV writer,但出于某种原因,您完全忽略了它,并尝试手动输出行。那毫无意义。使用可用的功能。在

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

使用csv模块很简单,因此您需要更具体地说明是什么让您确信元素在细胞中流血。例如,使用Python2.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文件:

^{pr2}$

或者

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

这正是它应该有的。现在,如果您使用制表符分隔的这些行,并且出于某种原因使用逗号作为分隔符拆分它们,那么您肯定会认为有两个列,一个带有ABC\tOne,另一个带有Two\t12。但那太傻了。在

相关问题 更多 >