我使用python csv
模块创建一个csv,其中一些值为json
字符串。然而,csv
模块的报价是完全打破了JSON:使用JSON Python CSV模块问题
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)
而且csv
对象转向引述关:
import csv
import json
writer = csv.writer(open('tmp', 'w'), quoting=csv.QUOTE_NONE)
writer.writerow([json.dumps([{u'a' : u'b'}])])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
_csv.Error: need to escape, but no escapechar set
有没有其他人遇到过这个?难道json
和csv
只是不能很好的一起玩? (这不是我的想法,json
stirngs csv
文件..我现在只需要处理)。不幸的是,这些CSV的我创建包含散列摘要和各种其他复杂的东西,这样所有的sed
或awk
ISH型解决方案来解决我尝试都失败或搞砸了别的东西的JSON ..
删除'quoting = csv.QUOTE_NONE'参数。 – falsetru
对,但是json仍然被引用破坏。 – qwwqwwq
难道你不能将引号字符改为'''? – mgilson