Сохранить 2d массив в CSV - PullRequest
       12

Сохранить 2d массив в CSV

0 голосов
/ 24 октября 2019

Здравствуйте, я хочу, чтобы входные данные func были списком, и каждый список сохранялся как 1 строка

моя попытка сохранить массив 2d

my_list = [['\ufeffUser Name', 'First Name', 'Last Name', 'Display Name', 'Job Title', 'Department', 'Office Number', 'Office Phone', 'Mobile Phone', 'Fax', 'Address', 'City', 'State or Province', 'ZIP or Postal Code', 'Country or Region'], ['chris@contoso.com', 'Chris', 'Green', 'Chris Green', 'IT Manager', 'Information Technology', '123451', '123-555-1211', '123-555-6641', '123-555-9821', '1 Microsoft way', 'Redmond', 'Wa',
'98052', 'United States'], ['ben@contoso.com', 'Ben', 'Andrews', 'Ben Andrews', 'IT Manager', 'Information Technology', '123452', '123-555-1212', '123-555-6642', '123-555-9822', '1 Microsoft way', 'Redmond', 'Wa', '98052', 'United States'], ['david@contoso.com', 'David', 'Longmuir', 'David Longmuir', 'IT Manager', 'Information Technology', '123453', '123-555-1213', '123-555-6643', '123-555-9823', '1 Microsoft way', 'Redmond', 'Wa', '98052', 'United States'], ['cynthia@contoso.com', 'Cynthia', 'Carey', 'Cynthia Carey', 'IT Manager', 'Information Technology', '123454', '123-555-1214', '123-555-6644', '123-555-9824', '1 Microsoft way', 'Redmond', 'Wa', '98052', 'United States'], ['melissa@contoso.com', 'Melissa', 'MacBeth', 'Melissa MacBeth', 'IT Manager', 'Information Technology', '123455', '123-555-1215', '123-555-6645', '123-555-9825', '1 Microsoft way', 'Redmond', 'Wa', '98052', 'United States']]

unifile.dump.excel("file.csv", "array", "utf-8", my_list)

моя попытка сохранить список в csv

l1 = ["aa", "ftyg"]
l2 = ["fgghg", "ftyfuv"]

unifile.dump.excel("file.csv", "list", "utf-8", l1, l2)

my func

def excel(file_path: str,  mode: str = "array",  t_encoding: str = "utf-8", write_mode: str = "r", *data: list):

    try:
        os.remove(file_path)
    except:
        pass
    if mode == "list":
        with open(file_path, 'w') as csv_file:
            csv_writer = csv.writer(csv_file, delimiter=',')
            for l in data:
                csv_writer.writerow(l)

    elif mode == "array":
        with open(file_path, write_mode, encoding=t_encoding) as csv_file:
            csv_writer = csv.writer(csv_file, delimiter=',')
            for l in data:
                csv_writer.writerow(l)
    else:
        pass
User Name,First Name,Last Name,Display Name,Job Title,Department,Office Number,Office Phone,Mobile Phone,Fax,Address,City,State or Province,ZIP or Postal Code,Country or Region
chris@contoso.com,Chris,Green,Chris Green,IT Manager,Information Technology,123451,123-555-1211,123-555-6641,123-555-9821,1 Microsoft way,Redmond,Wa,98052,United States
ben@contoso.com,Ben,Andrews,Ben Andrews,IT Manager,Information Technology,123452,123-555-1212,123-555-6642,123-555-9822,1 Microsoft way,Redmond,Wa,98052,United States
david@contoso.com,David,Longmuir,David Longmuir,IT Manager,Information Technology,123453,123-555-1213,123-555-6643,123-555-9823,1 Microsoft way,Redmond,Wa,98052,United States
cynthia@contoso.com,Cynthia,Carey,Cynthia Carey,IT Manager,Information Technology,123454,123-555-1214,123-555-6644,123-555-9824,1 Microsoft way,Redmond,Wa,98052,United States
melissa@contoso.com,Melissa,MacBeth,Melissa MacBeth,IT Manager,Information Technology,123455,123-555-1215,123-555-6645,123-555-9825,1 Microsoft way,Redmond,Wa,98052,United States

Проблема в том, что этот код заменит все предыдущие строки на конце строки.

1 Ответ

0 голосов
/ 24 октября 2019

Модуль панд действительно полезен. Это сработало для меня:

import pandas as pd
my_list = pd.DataFrame(my_list)
my_list.to_csv("example.csv")

Надеюсь, что помогает

...