1

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

我正在尝试将“名称”写入它自己的单元格。

谢谢!

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

2 回答 2

3
csv_writer.writerow([linkedin_name])

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

于 2013-10-31T15:50:34.713 回答
2

该行:

csv_writer.writerow(linkedin_name)

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

csv_writer.writerow([linkedin_name])
于 2013-10-31T15:50:47.490 回答