我写了一个python脚本,其中我从我计算的数字生成一个csv。
我写的行是:
writeRow = [str(t), len(c) , {k for k in c.keys()}, {k for k in c.values()}]
我有两个问题:
t
是一个可以从0开始的数字。但在这种情况下,0将被删除。
我试过没有str()
,但它没有改变......
这些集合在单元格中以集合的形式打印。但是,我想在同一个单元格中用逗号分隔这些数字而没有{}
我该怎么做?
修改
我正在使用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对应的值
答案 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