带有JSON的Python CSV模块问题
我正在使用python带有JSON的Python CSV模块问题,python,json,csv,Python,Json,Csv,我正在使用pythoncsv模块创建一个csv,其中一些值是json字符串。然而,csv模块的引用完全破坏了json: import csv import json writer = csv.writer(open('tmp', 'w')) writer.writerow([json.dumps([{'a' : 'b'}])]) 输出的json被破坏,如您所见: cat tmp > "[{""a"": ""b""}]" import json json.loads("[{""a"":
csv
模块创建一个csv,其中一些值是json
字符串。然而,csv
模块的引用完全破坏了json:
import csv
import json
writer = csv.writer(open('tmp', 'w'))
writer.writerow([json.dumps([{'a' : 'b'}])])
输出的json被破坏,如您所见:
cat tmp
> "[{""a"": ""b""}]"
import json
json.loads("[{""a"": ""b""}]")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/json/__init__.py", line 326, in loads
return _default_decoder.decode(s)
File "/usr/lib/python2.7/json/decoder.py", line 366, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/lib/python2.7/json/decoder.py", line 382, in raw_decode
obj, end = self.scan_once(s, idx)
ValueError: Expecting property name: line 1 column 2 (char 2)
还有其他人遇到过这种情况吗?json
和csv
是否只是在一起玩得不好?(在csv
文件中存储json
stirngs不是我的主意……我现在只需要处理一些事情)。不幸的是,我正在创建的这些CSV包含哈希摘要和各种其他复杂的内容,因此所有用于修复json的sed
或awk
ish类型的解决方案都失败或弄乱了其他内容。不要使用“
作为引号字符。使用其他内容:
with open('tmp', 'w') as fout:
writer = csv.writer(fout, quotechar="'")
真的,这只是把事情整理一下。当你读回数据时,你首先需要“取消引用”“它通过
csv.reader
读取数据。这将返回您输入的有效字符串json
Dropquoting=csv.QUOTE_NONE
参数。对,但是json仍然会被QUOTE破坏。您不能将QUOTE字符更改为”
?@qwwqwq,如果使用csv.reader,您将获得正确的json。您是对的,引发异常的另一个脚本没有使用csv.reader。。真是一团糟..将quotechar设置为除'“
之外的任何值都可以解决此问题,我的另一个问题是读取此文件的另一个脚本没有使用csv.reader
,这也解决了此问题
with open('tmp', 'w') as fout:
writer = csv.writer(fout, quotechar="'")