当写入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()
答案 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])