summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnthon van der Neut <anthon@mnt.org>2015-06-21 10:13:15 +0200
committerAnthon van der Neut <anthon@mnt.org>2015-06-21 10:13:15 +0200
commit65d6ea5f189095cb9007690d1d6c126ec8522225 (patch)
tree0d27a0beb251017da001569708fabb5445a2cd81
parentc82ca710c4c57d1aebee258585216d0fa0eef8ca (diff)
downloadruamel.yaml-65d6ea5f189095cb9007690d1d6c126ec8522225.tar.gz
add from CSV
-rw-r--r--py/convert/from_csv.py46
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
+