-1

何らかの理由で、自宅のコンピューターで職場のコンピューターと同じアカウントにログインできません。
Bo10 のコードを動作させることができましたが、abernert のコードを動作させることができませんでした。その理由を本当に理解したいと思います。

abernert のコードに対する私の更新は次のとおりです。

    import csv
    import sys
    import json
    import urllib2

    j = urllib2.urlopen('https://citibikenyc.com/stations/json')
    js = json.load(j)

    citi = js['stationBeanList']

    columns = ('stationName', 'totalDocks', 'availableDocks', 
               'latitude', 'longitude', 'availableBikes')
    stations = (operator.itemgetter(columns)(station) for station in citi)

    with open('output.csv', 'w') as csv_file:
        csv_writer = csv.writer(csv_file)
        csv_file.writerows(stations)

I thought adding this line `csv_writer = csv.writer(csv_file)` would fix the object has no attirbute error, but I am still getting it.  This is the actual error:

Andrews-MacBook:coding Andrew$ python citibike1.py
Traceback (most recent call last):
  File "citibike1.py", line 17, in <module>
    csv_file.writerows(stations)
AttributeError: 'file' object has no attribute 'writerows'

コードをこれに変更すると、出力は列の名前を 322 回繰り返すだけです。このエラーが発生していたため、14行目で変更しました:

Traceback (most recent call last):
  File "citibike1.py", line 17, in <module>
    csv_writer.writerows(stations)
  File "citibike1.py", line 13, in <genexpr>
    stations = (operator.itemgetter(columns)(station) for station in citi)
NameError: global name 'operator' is not defined: 

import csv
import sys
import json
import urllib2
import operator

j = urllib2.urlopen('https://citibikenyc.com/stations/json')
js = json.load(j)

citi = js['stationBeanList']

columns = ('stationName', 'totalDocks', 'availableDocks', 
           'latitude', 'longitude', 'availableBikes')
stations = (operator.itemgetter(0,1,2,3,4,5)(columns) for station in citi)

with open('output.csv', 'w') as csv_file:
    csv_writer = csv.writer(csv_file)
    csv_writer.writerows(stations)
4

2 に答える 2

0

abarnert が言及しているように、csvインポートしたモジュールを実際には使用していません。

また、列を格納するためのロジックが実際に転置される場合があります。代わりにこれをやりたいと思うかもしれません(タプル/リストの混乱を修正するために編集されました):

import csv
import json
import urllib2

j = urllib2.urlopen('https://citibikenyc.com/stations/json')
js = json.load(j)

citi = js['stationBeanList']

columns = ["stationName", "totalDocks", "availableDocks", "latitude", "longitude", "availableBikes"]
station_list = [[f[s] for s in columns] for f in citi]

with open("output.csv", 'w') as outfile:
  csv_writer = csv.writer(outfile)
  csv_writer.writerows(station_list)
于 2013-06-27T00:09:37.377 に答える