1
0
mirror of https://github.com/kellyjonbrazil/jc.git synced 2025-06-17 00:07:37 +02:00
Files
jc/docs/parsers/csv_s.md

86 lines
2.6 KiB
Markdown
Raw Normal View History

2021-10-24 13:10:47 -07:00
[Home](https://kellyjonbrazil.github.io/jc/)
# jc.parsers.csv_s
jc - JSON CLI output utility `csv` file streaming parser
2021-10-30 13:57:36 -07:00
> This streaming parser outputs JSON Lines
2021-10-24 13:10:47 -07:00
The `csv` streaming parser will attempt to automatically detect the delimiter character. If the delimiter cannot be detected it will default to comma. The first row of the file must be a header row.
Note: The first 100 rows are read into memory to enable delimiter detection, then the rest of the rows are loaded lazily.
Usage (cli):
$ cat file.csv | jc --csv-s
Usage (module):
import jc.parsers.csv_s
2021-11-22 09:10:11 -08:00
result = jc.parsers.csv_s.parse(csv_output.splitlines()) # result is an iterable object
for item in result:
# do something
2021-10-24 13:10:47 -07:00
Schema:
csv file converted to a Dictionary: https://docs.python.org/3/library/csv.html
2021-10-30 13:47:21 -07:00
{
"column_name1": string,
2021-11-22 09:36:58 -08:00
"column_name2": string,
"_jc_meta": # This object only exists if using -qq or ignore_exceptions=True
{
2021-12-09 10:54:04 -08:00
"success": boolean, # true if successfully parsed, false if error
2021-11-22 09:36:58 -08:00
"error": string, # exists if "success" is false
"line": string # exists if "success" is false
}
2021-10-30 13:47:21 -07:00
}
2021-10-24 13:10:47 -07:00
Examples:
$ cat homes.csv
"Sell", "List", "Living", "Rooms", "Beds", "Baths", "Age", "Acres", "Taxes"
142, 160, 28, 10, 5, 3, 60, 0.28, 3167
175, 180, 18, 8, 4, 1, 12, 0.43, 4033
129, 132, 13, 6, 3, 1, 41, 0.33, 1471
...
$ cat homes.csv | jc --csv-s
{"Sell":"142","List":"160","Living":"28","Rooms":"10","Beds":"5","Baths":"3","Age":"60","Acres":"0.28","Taxes":"3167"}
{"Sell":"175","List":"180","Living":"18","Rooms":"8","Beds":"4","Baths":"1","Age":"12","Acres":"0.43","Taxes":"4033"}
{"Sell":"129","List":"132","Living":"13","Rooms":"6","Beds":"3","Baths":"1","Age":"41","Acres":"0.33","Taxes":"1471"}
...
## info
```python
info()
```
Provides parser metadata (version, author, etc.)
## parse
```python
parse(data, raw=False, quiet=False, ignore_exceptions=False)
```
Main text parsing generator function. Returns an iterator object.
Parameters:
data: (iterable) line-based text data to parse (e.g. sys.stdin or str.splitlines())
raw: (boolean) output preprocessed JSON if True
quiet: (boolean) suppress warning messages if True
ignore_exceptions: (boolean) ignore parsing exceptions if True
Yields:
Dictionary. Raw or processed structured data.
Returns:
Iterator object
## Parser Information
Compatibility: linux, darwin, cygwin, win32, aix, freebsd
2021-12-01 16:12:51 -08:00
Version 1.1 by Kelly Brazil (kellyjonbrazil@gmail.com)