csv 如何在不带引号和括号的情况下将整数值写入文件

u0sqgete  于 5个月前  发布在  其他
关注(0)|答案(1)|浏览(67)

我有一个字典,键作为元组,我想写一个没有引号和括号的文件。
我用",".join(map(str, key))

import csv
d={(1, 1, 1): 600, (5, 5, 5): 700, (4, 4, 4): 800}

with open("out.csv", "wb") as f:
    w = csv.writer(f)
    for key,items in d.items():
        w.writerow([key,items])

字符串
我得到了这个:

"(1, 1, 1)",600
"(5, 5, 5)",700
"(4, 4, 4)",800


我期待这个:

1, 1, 1, 600
5, 5, 5, 700
4, 4, 4, 800

q8l4jmvw

q8l4jmvw1#

您需要将键值解包以将其放入列表中,即(1,2,1)-> 1,2,1,并将此列表传递给writerow函数。
在您当前的代码中,[(1,1,1),600]作为feed运行,并将其视为一个2元素列表,因此产生了上面提到的输出。
您需要将键值解压缩,即[(1,1,1),600][1,1,1,600]
这可以通过使用*运算符[*(1,1,1),600]来实现。
此外,open采用w模式,而不是wb二进制模式,因为您提供的数据是ASCII格式,而不是二进制格式。

import csv
d={(1, 1, 1): 600, (5, 5, 5): 700, (4, 4, 4): 800}

with open("out.csv", "w") as f:
    w = csv.writer(f)
    for key,items in d.items():
        w.writerow([*key,items])

字符串
否则,您可以使用此方法(如果您不想使用*解压缩)。

import csv
d={(1, 1, 1): 600, (5, 5, 5): 700, (4, 4, 4): 800}

with open("out.csv", "w") as f:
    w = csv.writer(f)
    for key,items in d.items():
        lis = [i for i in key]+[items]
        w.writerow(lis)

相关问题