如何在将元组列表导出到TSV

时间:2017-10-12 08:09:08

标签: python csv

我有一个列表,打印时看起来像:

[(('1321', '01'), ('MessageXZY', '02'), ('DescriptionSKS', '03'), ('S7_6', '04'), ('S7_3', '05')), (('0A3B', '06'), ('MessageZYA', '07'), ('DescriptionKAM', '08')), (('9K44', '09'), ('MessageYAL', '10'), ('DescriptionAUS', '11'), ('S7_2', '12'))]

使用以下代码导出时:

with open('HTML to TSV.tsv','w',encoding='ISO-8859-1') as out:
    tsv_out = csv.writer(out, delimiter="\t")
    for row in grouped_tuples:
        tsv_out.writerow(row)

我在text / TSV文件中得到以下内容:

('1321', '01')  ('MessageXZY', '02')    ('DescriptionSKS', '03')    ('S7_6', '04')  ('S7_3', '05')
('0A3B', '06')  ('MessageZYA', '07')    ('DescriptionKAM', '08')
('9K44', '09')  ('MessageYAL', '10')    ('DescriptionAUS', '11')    ('S7_2', '12')

期望的输出:

1321, 01     MessageXZY, 02     DescriptionSKS, 03     S7_6, 04     S7_3, 05
0A3B, 06     MessageZYA, 07     DescriptionKAM, 08
9K44, 09     MessageYAL, 10     DescriptionAUS, 11     S7_2, 12

我不想从条目中搜索和删除'),因为我的实际字符串合法地包含该组合。我该怎么办才能使 csv.writer()不写这些字符?

2 个答案:

答案 0 :(得分:1)

您可以在编写对之前对这些对进行分组:

import csv

grouped_tuples = [(('1321', '01'), ('MessageXZY', '02'), ('DescriptionSKS', '03'), ('S7_6', '04'), ('S7_3', '05')), (('0A3B', '06'), ('MessageZYA', '07'), ('DescriptionKAM', '08')), (('9K44', '09'), ('MessageYAL', '10'), ('DescriptionAUS', '11'), ('S7_2', '12'))]

with open('HTML to TSV.tsv','w', encoding='ISO-8859-1', newline='') as out:
    tsv_out = csv.writer(out, delimiter="\t")

    for row in grouped_tuples:
        tsv_out.writerow(', '.join(pair) for pair in row)

给你:

1321, 01    MessageXZY, 02  DescriptionSKS, 03  S7_6, 04    S7_3, 05
0A3B, 06    MessageZYA, 07  DescriptionKAM, 08
9K44, 09    MessageYAL, 10  DescriptionAUS, 11  S7_2, 12

答案 1 :(得分:0)

取代

    tsv_out.writerow(row)

    tsv_out.writerow((row[0],row[1]))