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

iterable をwriterowに渡すと、要素ごとに 1 つのセルが出力されます。文字列は反復可能で、要素は個々の文字であるため、現在のコードは機能しません。リストは、指定された 1 つの要素で反復可能なものを記述する最も便利な方法です。タプルを渡すこともできますが、要素が 1 つのタプルの構文は少し不快です。csv_writer.writerow((linkedin_name,))

于 2013-10-31T15:50:34.713 に答える
2

The line:

csv_writer.writerow(linkedin_name)

Is expecting a list. Try changing it to:

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