エンコードされた応答を受信している場合は、 を使用urllib.unquote
して、エスケープされた文字を「実際の」表現に置き換えることができます。これを行うと、モジュールを使用しjson
て文字列を Python オブジェクトとしてロードし、csv
モジュールを使用して応答に基づいて CSV を作成できます。応答の構造によって、これがどのように設定されるかが決まりますが、うまくいけば、これで正しい道に進むことができます。
In [1]: import csv
In [2]: import json
In [3]: import urllib
In [4]: json_resp = urllib.quote('[{"name": "John Doe", "age": 35}, {"name": "Jane Doe", "age": 33}]')
In [5]: json_resp # What I believe your response looks like
Out[5]: '%5B%7B%22name%22%3A%20%22John%20Doe%22%2C%20%22age%22%3A%2035%7D%2C%20%7B%22name%22%3A%20%22Jane%20Doe%22%2C%20%22age%22%3A%2033%7D%5D'
In [6]: resp = urllib.unquote(json_resp) #'Unquote' the response
In [7]: resp
Out[7]: '[{"name": "John Doe", "age": 35}, {"name": "Jane Doe", "age": 33}]'
In [8]: content = json.loads(resp) # Turn the resp into a Python object
In [9]: fieldnames = ('name', 'age') # Specify the order in which to write fields
In [10]: with open('mycsv.csv', 'wb') as f:
....: writer = csv.DictWriter(f, fieldnames)
....: writer.writeheader() # Python 2.7+
....: for item in content:
....: writer.writerow(item)
....:
....:
これにより、次のような CSV が書き込まれます。
name,age
John Doe,35
Jane Doe,33