python csv writer 在不需要时添加引号

标签 python json csv

我在使用 csv writer 将 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'

关于python csv writer 在不需要时添加引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22485940/

相关文章:

javascript - 解析 JSON 数据并获取一个对象

r - 使用向量将多个 csv 文件读入到 r

python - 无和空字符串的 CSV 阅读器行为

python - 有什么办法可以找到轮廓之间的距离吗?

python - iPython 中 Seaborn 统计数据可视化的默认字体

python - 使用程序化 Web 浏览时无法使用检查元素访问输入字段

java - 在控制台上以 json 格式打印 Final Class

json - 在 VBA 中打开本地 JSON 文件

python - 函数变量值定义后发生变化

python - 用于在 Python 中解析复杂制表符分隔/csv 文件的循环