0

我编写了一个 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. 这些集合作为单元格中的集合打印。但是,我想在同一个单元格中用逗号分隔这些数字,并且没有我该{}怎么做?

编辑

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

我要发布更多代码:

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

然后我定义了 reader、writer 和变量 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 是一个整数

最后的行应如下所示:

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

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

4

3 回答 3

2

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

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

这将处理逗号。但是,对于任何重要的数据,这将很容易破坏,因此请考虑改用csv模块,这将负责转义危险字符。

于 2013-10-31T21:52:20.620 回答
1

使用格式字符串怎么样?

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

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

于 2013-10-31T21:55:13.493 回答
1

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

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

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

>>>t = 023
>>>t
19
于 2013-10-31T22:27:49.167 回答