写入CSV文件

时间:2013-10-31 15:48:03

标签: python csv

当写入CSV文件时,它会将每个字母写入自己的单元格。关于如何解决这个问题的任何想法?

我正在尝试将'name'写入自己的单元格。

谢谢!

import json
import csv
from unidecode import unidecode

def main():
  csv_writer = open_csv() #returns the functionality to write to a csv
  str_data = []
  with open('location') as f:
    for line in f:
      str_data.append(json.loads(line))
  data = str_data[0]
  for item in data['contacts']:
    linkedin_name = unidecode(name(item))
    write_to_csv(csv_writer, linkedin_name)


def name(item):
 name = item['name']
 return name


def open_csv():
  final_csv = open('test.csv', 'wb')
  csv.writer = csv.writer(final_csv)
  return csv.writer

def write_to_csv(csv_writer, linkedin_name):
  csv_writer.writerow(linkedin_name)


if __name__ == '__main__':
  main()

2 个答案:

答案 0 :(得分:3)

csv_writer.writerow([linkedin_name])

您可以将任何迭代传递给writerow,它将为每个元素打印一个单元格。字符串是可迭代的,元素是单个字符,这就是您当前代码不起作用的原因。列表是使用一个指定元素编写可迭代的最方便的方法。你也可以传递一个元组,但是单元素元组的语法有点不愉快:csv_writer.writerow((linkedin_name,))

答案 1 :(得分:2)

该行:

csv_writer.writerow(linkedin_name)

期待一份清单。尝试将其更改为:

csv_writer.writerow([linkedin_name])