我正在尝试在map
中传递两个函数和一个可迭代对象test_code = map(get_repo_info, repo_page)
def get_repo_info(data):
print data['id'], data['full_name']
def repo_page():
...some code....
returns a list of dictionaries that I map over in the map function
def write_to_csv():
csv_open = open('test.csv', 'wb')
csv_writer = csv.writer(csv_open)
return csv_writer
在get_repo_info()
函数中,我想将所有内容写入csv文件。我想将每行写入csv行
我希望它看起来像这样
def get_repo_info(data, csv_writer):
csv_writer.writerow([data['id'], data['full_name']])
map
函数看起来像这样
map(get_repo_info, repo_page())
但是,我无法弄清楚如何在get_repo_info()
函数中传递csv_writer
map
的第二个参数,因为map
使用的函数只能通过一次一个论点,而不是两个。
答案 0 :(得分:0)
def get_repo_info(data):
print data['id'], data['full_name']
def repo_page():
return [{"id":"bar","full_name":"foobar"}]
test_code = map(get_repo_info, repo_page()) # call the method
bar foobar
您可以在write_to_csv
中调用地图:
def get_repo_info():
map(write_to_csv,[[[data['id'], data['full_name']] for data in repo_page()]])
def repo_page():
return [{"id": "bar", "full_name": "foobar"}, {"id": "bar1", "full_name": "foobar1"}]
def write_to_csv(data):
csv_open = open('test.csv', 'wb')
csv_writer = csv.writer(csv_open)
csv_writer.writerows(data)
get_repo_info()
这写道:
bar,foobar
bar1,foobar1
到您的csv文件。
但是使用for循环可以实现相同的目的:
def write_to_csv(data):
csv_open = open('test.csv', 'wb')
csv_writer = csv.writer(csv_open)
csv_writer.writerows([[data['id'], data['full_name']] for data in repo_page()])
答案 1 :(得分:0)
我把它分解成一个单独的函数
test_code = map(get_repo_info, repo_page)
def get_repo_info(data):
return (data['id'], data['full_name'])
def repo_page():
...some code....
returns a list of dictionaries that I map over in the map function
def write_to_csv():
csv_open = open('test.csv', 'wb')
csv_writer = csv.writer(csv_open)
return csv_writer
some_info = get_repo_info(data)
csv_writing = write_to_csv()
csv_writing.writerow(some_info)