csv-jsonl¶
Add DictWriter style class using bits of the built-in csv module to
handle writing jsonl files as defined at jsonlines.org.
- class csv_jsonl.JSONLinesDictWriter(_fh, fieldnames=None, extrasaction='raise')¶
Write
jsonformatted dictionaries, separated by newlines.Example
>>> from csv_jsonl import JSONLinesDictWriter >>> l = [{"foo": "bar", "bat": 1}, {"foo": "bar", "bat": 2}] >>> with open("foo.jsonl", "w", encoding="utf-8") as _fh: ... writer = JSONLinesDictWriter(_fh) ... writer.writerows(l) ... >>> d = {"foo": "bar", "bat": 1} >>> with open("bar.jsonl", "w", encoding="utf-8") as _fh: ... writer = JSONLinesDictWriter(_fh) ... writer.writerow(d) ... >>> from collections import OrderedDict >>> od = OrderedDict([('foo', 'bar'), ('bat', 1)]) >>> with open("qux.jsonl", "w", encoding="utf-8") as _fh: ... writer = JSONLinesDictWriter(_fh) ... writer.writerow(od) ... >>> fieldnames = ["foo", "bar"] # keys = ["foo", "bat"] expect fail >>> with open("baz.jsonl", "w", encoding="utf-8") as _fh: ... writer = JSONLinesDictWriter(_fh, fieldnames=fieldnames) ... writer.writerows(l) ... Expect ValueError
- class csv_jsonl.JSONLinesListWriter(_fh, fieldnames=None, extrasaction='raise')¶
Write a list of lists. Optionally supply header.
Example
>>> from csv_jsonl import JSONLineslistWriter >>> l = zip(["foo", "bar", "bat"], range(3), range(3)) >>> with open("foo.jsonl", "w", encoding="utf-8") as _fh: ... writer = JSONLinesListWriter(_fh) ... writer.writerows(l) ... >>> l = zip(["foo", "bar", "bat"], range(3), range(3)) >>> with open("bar.jsonl", "w", encoding="utf-8") as _fh: ... writer = JSONLinesDictWriter(_fh) ... writer.writerow(next(l)) ... >>> fieldnames = ["baz", "qux", "quux"] >>> l = zip(["foo", "bar", "bat"], range(3), range(3)) >>> with open("foo.jsonl", "w", encoding="utf-8") as _fh: ... writer = JSONLinesListWriter(_fh, fieldnames=fieldnames) ... writer.writeheader() ... writer.writerows(l) ...
- writeheader()¶
Write fieldnames as first list
- class csv_jsonl.JSONLinesWriter(_fh: TextIO)¶
Dump json-encoded dictionaries to file in
jsonlformat.- writerow(rowdict: Mapping[str, Union[str, int, float, bool]])¶
Write a dictionary as a
utf-8encoded string. Test for encoding.The
jsonlinesformat allows for anythingjsonwill allow, so we comply.- Parameters:
rowdict (Mapping[str, Any]) – dictionary with string values, su
- writerows(row_iterable: Iterable[Mapping[str, Any]])¶
Write an iterable of dictionary-like objects (with
__getitem__) as\n-separatedjsonobjects.- Parameters:
row_iterable (Iterable[Mapping[str, Any]]) – List of dictionaries.