2012-07-09 96 views
0

可能重复:
python csv: save results to csv file
Python: How to write a dictionary of tuple values to a csv file?如何用Python编写csv文件?

以前我用这个写由线的结果线到文本文件中,在每个行,值由标签

分离
fd_out.write("%s\t%d\t%d\t%s\n" % (obj["name"],obj["count"],obj["age"],obj["params"]["country"]) 

但现在我想要CSV输出,而我想如何e编写代码? 就像这样或者我应该导入CSV并使用其他方法? 对不起,我的编程相当新手...

fd_out.write("%s,%d,%d,%s\n" % (obj["name"],obj["count"],obj["age"],obj["params"]["country"]) 
+4

http://docs.python.org/library/csv.html – tobixen 2012-07-09 14:07:59

回答

6

您的代码应该适用于基本数据,但在某些情况下可能会出现一些问题,如果数据中有逗号。

csv模块负责处理该问题以及任何类似的问题。用法很简单,你只需做到:

writer = csv.writer(fd_out) 
writer.writerows((obj["name"],obj["count"],obj["age"],obj["params"]["country"])) 

注意双括号,我们通过一个元组,因为writerows除了可迭代。如果您需要更多信息,请随时检查the doc

1

“CSV”是不是一个标准,即使“CSV”的字面意思是“逗号分隔值”,使用标签作为分隔符只是像逗号一样常见,如果不是更常见的话。另请参见维基百科:http://en.wikipedia.org/wiki/Comma-separated_values

为了处理包含分隔符(即制表符或逗号)的CSV字段,通常引用数据,即使用双引号。没有标准 - 有时只引用包含分隔符的数据字段。在下面的例子中,所有的字段都会被引用。

使用csv内置库,可以非常容易地根据需要修改输出CSV文件的格式。

import csv 

objs = [{'name': 'knut', 'age': 74, 'count': 13}, 
     {'name': 'lydia', 'age': 14, 'count': 3}] 

with open("/tmp/example.csv", "w") as outfile: 
    ## Ordering of the fields in the CSV output 
    headers = ['name', 'age', 'count'] 

    ## although "CSV" stands for "comma separated values", 
    ## it's quite common to use other delimiters i.e. TAB 
    ## and still call it "CSV". 
    writer = csv.writer(outfile, delimiter="\t", quotechar='"', quoting=csv.QUOTE_ALL) 

    ## it's common in CSV to have the headers on the first line 
    writer.writerow(headers) 

    ## Write out the data 
    for obj in objs: 
     writer.writerow([obj[key] for key in headers]) 

这个例子也说明了在Python浓缩列表操作... [obj[key] for key in headers]的意思是“给我的obj [关键]列表中所有标题密钥”。