消除','。join()调用生成的双引号

时间:2018-02-01 10:06:09

标签: python list dictionary

List_final是我正在构建的全局变量,用于将数据推送到csv格式。

下面代码中的

key_values以双引号返回结果。所以我的最终列表有一个我想要删除的双引号。

for entry,value_all in csv_data.iteritems():

        list_temp=[entry]
        key_values = ','.join(value_all.itervalues())    
        str(key_values).replace('"', '')

        list_temp.append(str(key_values))
        list_final.append(list_temp) 

with open('test.csv', 'w') as fp:
        writer = csv.writer(fp,delimiter=',',quotechar='"')
        writer.writerows(list_final)

输出:

2018-01-27T08:00:00.000Z,"11,14,16,65,234,7,7,574"
2018-01-28T08:00:00.000Z,"1095,141,1646,638,2360,6,6,576"

1 个答案:

答案 0 :(得分:4)

','.join本身引用的引号。关键是CSV编写器看到一个带逗号的字符串,因此决定转义该字符串并将其包装成引号。

但根据示例输出,我认为您希望数据显示为单独的列。使用CSV编写器的想法是你必须自己进行字符串构造。如果您想将其写为单独的值,可以使用:

for entry,value_all in csv_data.iteritems():
        list_temp=[entry]
        list_temp += value_all.itervalues()
        list_final.append(list_temp) 

with open('test.csv', 'w') as fp:
        writer = csv.writer(fp,delimiter=',',quotechar='"')
        writer.writerows(list_final)

或者我们可以使用列表理解:

list_final = [[entry, *value_all.itervalues()]
              for entry,value_all in csv_data.iteritems()]

with open('test.csv', 'w') as fp:
        writer = csv.writer(fp,delimiter=',',quotechar='"')
        writer.writerows(list_final)