您如何将带引号,逗号分隔的项目列表写入CSV文件,而引号列表中没有最后一个逗号?

时间:2018-12-06 00:46:00

标签: python

什么是将包含嵌入的(用引号引起来的)逗号分隔值列表的数据行写入CSV文件的优雅的Python方式?

我需要在用逗号分隔的列表两边加上引号,以便在使用Excel查看时,Excel不会将列表分成单独的列。

我的功能如下:

def write_customer_list(self):
    with open('reports/systems.csv', 'w') as f:
        f.write('Systems Report for week {}\n'.format(self.week))
        f.write('CustId,IP_AddrList,ModelNum\n')   # Header for csv file
        for cust_id, system in self.systems.items():
            f.write('{}'.format(cust_id))
            f.write(',\"')  # open double quote string for list
            for value in system['ip_addr_list']:
                f.write('{},'.format(value))
            f.write('\"')  # close the quote
            f.write(',{}\n'.format(system['model_num']))

输出看起来像这样:

123,"10.1.1.6,10.1.2.12,10.1.3.15,",NEX3601
124,"10.2.5.6,10.2.1.12,",NEX3604

如何消除IP列表中的尾部','?

1 个答案:

答案 0 :(得分:0)

代替

for value in system['ip_addr_list']:
    f.write('{},'.format(value))

f.write( ','.join(system['ip_addr_list']) )

这将为您提供一个逗号分隔的列表,该列表末尾没有逗号。有关更多信息,请参见join函数的文档。

您可能还想看看CSV模块。使用此模块时,您只需要提供数据列表,它就会为您格式化所有内容。