写入CSV - 行,而不是列

时间:2012-11-06 00:14:08

标签: python csv

我遇到了一个问题,即我的脚本写入多个列而不是行。我不确定我做错了什么。

披露 - 我对编程很陌生。

编辑 - 想出来了。这有效: - )

有什么想法吗?

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()

1 个答案:

答案 0 :(得分:0)

您的repo_information看起来像

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

所以看起来你需要的只是writerows

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

当然,这会将所有数据写入一列(每个名称都在一个单独的行上)。如果你想把它全部写到同一行,你可以:

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

然后就像你正在做的那样writerow。然后,这将把所有名称放在同一行。