Source code for sniputils.conffor.csvtor

from typing import List

from pandas import DataFrame, read_csv

from ..snippets import ensure_dir_exist


def separator_filter(item):
    """
    filter whitespace which has ambiguity in data-str

    :param item: data item, if str, filter whitespace
    :return: item or filtered
    """
    if isinstance(item, str):
        return item.replace('\r', ' ').replace('\n', ' ').replace(',', '-')
    return item


def frame_csv(data_frame: DataFrame, file: str, **kwargs):
    """
    store pandas.DataFrame to csv, with default options
    """
    ensure_dir_exist(file)
    data_frame.to_csv(file, encoding='utf-8', header=True, index=False, **kwargs)


[docs]def save_list_csv(data: List[List], columns: List[str], file: str, **kwargs): """ store data list to csv """ for index, line in enumerate(data): data[index] = [separator_filter(item) for item in line] frame = DataFrame(data, columns=columns) frame_csv(frame, file, **kwargs)
[docs]def read_list_csv(columns: List[str], file: str, **kwargs) -> List[List]: """ read csv with columns, return raw data list :return: DataFrame rows value """ frame = read_csv(file, names=columns, header=0, encoding='utf-8', **kwargs) return frame.values