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

0 python csv

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

我尝试使用",".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])
Run Code Online (Sandbox Code Playgroud)

我得到这个:

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])
Run Code Online (Sandbox Code Playgroud)

我期望这样:

"(1, 1, 1)",600
"(5, 5, 5)",700
"(4, 4, 4)",800
Run Code Online (Sandbox Code Playgroud)

tem*_*mmo 5

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

您当前代码中的代码[(1,1,1),600]将用作提要,并将其视为2元素列表,因此会产生上述输出。

你需要解压的键值即[(1,1,1),600][1,1,1,600]

使用*运算符可以达到目的 [*(1,1,1),600]

同样openwwb二进制模式下,因为您以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])
Run Code Online (Sandbox Code Playgroud)

否则,您可以使用(如果不想与 *

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)
Run Code Online (Sandbox Code Playgroud)