0

可能重复:
python csv:将结果保存到 csv 文件
Python:如何将元组值的字典写入 csv 文件?

以前我使用它逐行将结果写入文本文件,在每一行中,值由制表符分隔

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"])
4

2 回答 2

6

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

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

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

注意双括号,我们传递一个元组,因为writerows除了一个可迭代的。如果您想了解更多信息,请随时查看文档。

于 2012-07-09T14:10:06.947 回答
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[key] 列表”。

于 2012-07-09T14:08:32.830 回答