用python编写csv

时间:2013-10-31 21:45:16

标签: python csv

我写了一个python脚本,其中我从我计算的数字生成一个csv。

我写的行是:

writeRow = [str(t), len(c) , {k for k in c.keys()}, {k for k in c.values()}]

我有两个问题:

  1. t是一个可以从0开始的数字。但在这种情况下,0将被删除。 我试过没有str(),但它没有改变......

  2. 这些集合在单元格中以集合的形式打印。但是,我想在同一个单元格中用逗号分隔这些数字而没有{}我该怎么做?

  3. 修改

    我正在使用csv模块;在代码中,我为每行写入创建列表,然后使用csv.writerow

    编写它们

    我要发布更多代码:

    from csv import reader, writer
    with open(fileName1) as inp, open(fileName2,'w') as o:
    

    然后我定义了读者,作者和变量t,c

    writeRow = [str(t), len(c) , {k for k in c.keys()}, {k for k in c.values()}]
    

    然后我将结果写在输出文件

    修改 t的形式和行应该是什么样的

    t = 023 t = 123 t是一个int

    最后的一行应该如下:

    cell1  cell2         cell3       cell4 
    123    2     string1,string2    num1,num2
    

    string1和str2是dict键; num1,num2对应的值

3 个答案:

答案 0 :(得分:2)

对于初学者,您可以利用join()方法(假设键和值是字符串):

",".join(c.keys()) + "," + ",".join(c.values())

这将照顾逗号。但是,对于任何非平凡的数据,这都会非常容易破解,因此请考虑使用csv模块,这样可以避免危险的字符转义。

答案 1 :(得分:1)

使用格式字符串怎么样?

'%s,%i'%(t,c) 

可能会做你想要的。您也可以使用'%03i'或类似的东西在您的号码之前产生一些填充零。或者,我可能会误解你的问题。尝试发布更完整(可运行)的示例。

答案 2 :(得分:1)

使用带有0的填充的字符串格式,并为集合加入:

writeRow = ['{:0>3}'.format(t), len(c) , ','.join(c.keys()), ','.join(c.values())]

请注意,您不应使用前导t输入0的值:

>>>t = 023
>>>t
19