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

时间:2019-07-03 22:01:08

标签: python csv

我有一本以键为元组的字典,我想编写一个不带引号和括号的文件。

我尝试使用var a = new A() { B = new B() { SomeProperty = "Some Value" } }; context.As.Add(a); context.SaveChanges();

",".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 个答案:

答案 0 :(得分:5)

您需要解压缩键值才能将其放入列表。 ie(1,2,1)-> 1,2,1并将此列表传递给writerow函数。

您当前的代码[(1,1,1),600]中的

将作为提要,并且将其视为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)