diff options
author | Anthon van der Neut <anthon@mnt.org> | 2015-06-21 10:13:15 +0200 |
---|---|---|
committer | Anthon van der Neut <anthon@mnt.org> | 2015-06-21 10:13:15 +0200 |
commit | 65d6ea5f189095cb9007690d1d6c126ec8522225 (patch) | |
tree | 0d27a0beb251017da001569708fabb5445a2cd81 | |
parent | c82ca710c4c57d1aebee258585216d0fa0eef8ca (diff) | |
download | ruamel.yaml-65d6ea5f189095cb9007690d1d6c126ec8522225.tar.gz |
add from CSV
-rw-r--r-- | py/convert/from_csv.py | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/py/convert/from_csv.py b/py/convert/from_csv.py new file mode 100644 index 0000000..6e1bd09 --- /dev/null +++ b/py/convert/from_csv.py @@ -0,0 +1,46 @@ +# coding: utf-8 + +from __future__ import print_function + +import dateutil.parser +import ruamel.yaml + +class CSV2YAML(object): + def __init__(self, args=None): + # self.flatten = not getattr(args, 'no_flatten', False) + self.delimiter = getattr(args, 'delimiter', None) + + def __call__(self, csv_file_name): + import csv + + data = [] + with open(csv_file_name) as inf: + for line in csv.reader(inf, delimiter=self.delimiter): + data.append(self.process_line(line)) + print(ruamel.yaml.dump(data, Dumper=ruamel.yaml.RoundTripDumper)) + + def process_line(self, line): + """convert lines, trying, int, float, date""" + ret_val = [] + for elem in line: + try: + res = int(elem) + ret_val.append(res) + continue + except ValueError: + pass + try: + res = float(elem) + ret_val.append(res) + continue + except ValueError: + pass + try: + res = dateutil.parser.parse(elem) + ret_val.append(res) + continue + except TypeError: + pass + ret_val.append(elem) + return ret_val + |