0

スクリプトが行ではなく複数の列に書き込むという問題に悩まされています。何が間違っているのかわかりません。

開示-私はプログラミングに本当に慣れていません。

編集-それを理解した。これはうまくいきました:-)

何かご意見は?

import json
import csv
import subprocess
import urllib
import requests
from unidecode import unidecode

def main():
    list_writer= open_csv()
    info = test_method()
    for list in info:
        write_to_csv(list_writer, list)


def test_method():
    r = requests.get('https://api.github.com/legacy/repos/search/python'+'?start_page=1', auth=('user', 'pass'))
    dict_of_repos = json.loads(r.text)
    list_of_repos = dict_of_repos["repositories"]
    repo_information = []
    for repo in list_of_repos:
        indiv_repo = []
        indiv_repo.append(repo["name"])
        indiv_repo.append(repo["fork"])
        print indiv_repo
        repo_information.append(indiv_repo)
    return repo_information

def open_csv():
    github_csv = open('Githubcsv_1_2.csv', 'wb')
    writer = csv.writer(github_csv)
    return writer   

def write_to_csv(list_writer, info):
    list_writer.writerow(info)
    return

if __name__ == '__main__':
    main()
4

1 に答える 1

0

あなたのrepo_information意志は次のように見えます

[
  ['name'],
  ['name2'],
  ['name3']
]

必要なのはwriterows

def write_to_csv(list_writer, info):
    list_writer.writerows(info)

もちろん、これはすべてのデータを 1 つの列に書き込みます (それぞれの名前は別の行にあります)。すべてを同じ行に書き込みたい場合は、次のことができます。

for repo in list_of_repos:            
        repo_information.append(repo['name'])
    print repo_information # ['name', 'name2', 'name3']
    return repo_information

そして、writerowあなたが現在行っているように。これにより、すべての名前が同じ行に配置されます。

于 2012-11-06T00:26:10.680 に答える