3

私はPythonの初心者で、データをcsvファイルにエクスポートしようとしていますが、すべての括弧とコンマ区切りを取り除く方法がわかりません. 理想的には、「カウント」のすべての値を持つ列と「月」の値を持つ列の 2 つの列が必要です。

アドバイスをいただければ幸いです。

私のコード:

from sunlight import capitolwords
import requests
import csv

r = requests.get ('http://capitolwords.org/api/1/dates.json?phrase=guns&start_date=2011-  
12-01&end_date=2013-01-
15&granularity=month&sort=count&apikey=ab02633fb17841d09f4c3660e0384ae5')
data = r.text

ifile = open('guns.csv', 'rb')
reader = csv.reader(data.splitlines(), delimiter=',')
for row in reader:
    print row

結果:

  ['{']
  ['    "results": [']
  ['        {']
  ['            "count": 62.0', '']
  ['            "month": "201212"']
  ['        }', '']
  ['        {']
  ['            "count": 36.0', '']
  ['            "month": "201207"']
  ['        }', '']
  ['        {']
  ['            "count": 35.0', '']
  ['            "month": "201112"']
  ['        }', '']
  ['        {']
  ['            "count": 27.0', '']
  ['            "month": "201202"']
  ['        }', '']
  ['        {']
  ['            "count": 27.0', '']
4

3 に答える 3

6

応答は Json であるため、json データを次のようにロードします。

data = r.json()["results"] # read the json response and keep the results part

csv ファイルに次のように書き込みます。

with open("guns.csv", "wb") as csvfile:
    f = csv.writer(csvfile)
    f.writerow(["Count", "Month"]) # write the headers if you like
    for elem in data:
        f.writerow([elem["count"], elem["month"]])
于 2013-01-27T17:35:25.743 に答える
3

上記の @thikonom の発言に少し説明を加えたいと思います。

r.json()

r.json() を使用しているときは、rの内容をjsonとして解釈しています。送信したクエリ文字列で、データが json であるというヒントが与えられました。json に精通している場合、結果も json のように見えます。

r.json()["results"]

ここで、json に結果rをキー: resultsで辞書を検索するように指示しています。クエリから何を期待しているかを確認できることは、ここで大きな助けになります。結果は、上のウィンドウに貼り付けた結果に表示されます。また、辞書が表示される標準的な方法で表示されることも認識しています。

{'results': [{'month': '201212', 'count': 62.0}...

等々。この場合の結果はキーであり、 :の後の残りのデータはキーの値と見なされます。~> r.json()["result"] <~ を使用すると、結果の値が返されます。ただし、 'month''count'も {} で囲まれていることに気付くでしょう。つまり、それぞれがキーと値のペアになっています。これは、辞書内に辞書がネストされていることを意味します。

f.writerow([elem["count"], elem["month"]])

行ごとに調べて、 countmonthの両方のキーのを引き出し、それを *.csv ファイルに保存します。

これが他の誰かを助けることを願っています!

于 2016-04-08T04:26:29.740 に答える
2

CSV パッケージが必須でない場合は、通常の出力操作を使用してファイルを CSV で保存できます。CSV は、コンマで区切られた列を持つ単なる txt ファイルです。

ここで、これを行う方法を説明します。

with open("abc.csv","w+") as fh:
    str = "count: 62.0"

    str = str + ",month: 201212" 

    fh.writeline(str)
于 2013-01-27T17:37:09.400 に答える