python导出csv不带引号的句子_python csv writer在不需要时添加引号

在使用Python的csv模块将JSON对象写入CSV文件时,遇到因双引号导致的JSON无效问题。解决方案是设置`quoting=csv.QUOTE_NONE`和`quotechar=''`,以防止自动引用。这样可以确保JSON字符串在文件中正确无引号地写入。
摘要由CSDN通过智能技术生成

我有使用csv编写器将json对象写入文件的问题,json对象似乎有多个双引号,因此导致json对象变为无效,这是结果:

"{""user.CustomAttribute.ISOLanguageCode"": ""en"", ""user.Email"": ""emzy1786@googlemail.com""

我想要的是什么

{"user.CustomAttribute.ISOLanguageCode": "en", "user.Email"": "emzy1786@googlemail.com"}

这是我打开文件的方式,也许我可以通过一个参数来防止这种情况发生?

file = csv.writer(open(localResultPath + ".txt",'ab'),delimiter = '|')

这是我写入文件的方式,最后一个追加将json添加为字符串

list.append(pk)

list.append(email)

list.append(json)

file.writerow(list)

解决方法:

使用quoting = csv.QUOTE_NONE关闭自动引用,并将quotechar设置为空字符串:

file = csv.writer(open(localResultPath + ".txt",'ab'),

delimiter='|', quoting=csv.QUOTE_NONE, quotechar='')

即使使用csv.QUOTE_NONE,csv.writer()仍然需要引用quotechar,如果将其设置为除空字符串之外的任何内容(如果存在于值中).默认引号字符是“并且JSON值充满了这些.

演示:

>>> from cStringIO import StringIO

>>> import csv

>>> f = StringIO()

>>> writer = csv.writer(f, delimiter='|', quoting=csv.QUOTE_NONE, quotechar='')

>>> writer.writerow(['{"user.CustomAttribute.ISOLanguageCode": "en"}'])

>>> f.getvalue()

'{"user.CustomAttribute.ISOLanguageCode": "en"}\r\n'

标签:json,python,csv

来源: https://codeday.me/bug/20190612/1225993.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值