可能重复:
python csv: save results to csv file
Python: How to write a dictionary of tuple values to a csv file?
以前我用它来逐行将结果写入文本文件,在每一行中,值由制表符分隔
fd_out.write("%s\t%d\t%d\t%s\n" % (obj["name"],obj["count"],obj["age"],obj["params"]["country"])
但是现在我想要输出CSV输出,我想如何编写代码? 就像这样或者我应该导入CSV并使用其他方法吗? 对不起,我是编程新手......
fd_out.write("%s,%d,%d,%s\n" % (obj["name"],obj["count"],obj["age"],obj["params"]["country"])
答案 0 :(得分:6)
您的代码应该适用于基本数据,但如果您的数据中包含逗号,则在某些情况下可能会出现问题。
csv
模块处理该问题以及任何类似问题。使用非常简单,您只需:
writer = csv.writer(fd_out)
writer.writerows((obj["name"],obj["count"],obj["age"],obj["params"]["country"]))
注意双重parens,我们传递一个元组,因为writerows
除了可迭代之外。如果您想了解更多信息,请随时查看the doc。
答案 1 :(得分:1)
“CSV”不是标准,即使“CSV”字面意思是“以逗号分隔的值”,使用tab作为分隔符也与逗号一样常见,如果不是更常见的话。另见维基百科: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 [key]列表”。