Provides generator to read Kami (god) CSV record as list of string.
Project description
⛩️God Slayer⚔️
Provides generator to read Kami (god) CSV record as list of string.
Context
It's beyond CSV module😱
We often face CSV files like this:
population | |||
---|---|---|---|
age | total number | male | female |
0~4 | 21303 | 10867 | 10436 |
0 | 4062 | 2069 | 1993 |
1 | 4279 | 2171 | 2108 |
2 | 4285 | 2152 | 2133 |
3 | 4434 | 2268 | 2166 |
4 | 4243 | 2207 | 2036 |
5~9 | 21017 | 10956 | 10061 |
5 | 4369 | 2283 | 2086 |
6 | 4345 | 2213 | 2132 |
7 | 4117 | 2163 | 1954 |
8 | 4155 | 2146 | 2009 |
9 | 4031 | 2151 | 1880 |
sum | 42320 | 21823 | 20497 |
material: Residents' Culture Department Resident Registration Section |
It's beyond CSV module😱 We just want the population for each age ...
We call such a CSV file Kami CSV.
Features
Let's iterate to read only required row from CSV💡
- ⚔️ Skips to the row after the header row
- ⚔️ Skips partition rows
- ⚔️ Stops iteration bedore footer row
Quickstart
pip install godslayer
Let's resolve above example:
from pathlib import Path
def print_required_row():
god_slayer_factory = GodSlayerFactory(
header=["age", "total", "male", "female"],
partition=[r"^\d*〜\d*$", r"^\d*$", r"^\d*$", r"^\d*$"],
footer=["sum", r"^\d*$", r"^\d*$", r"^\d*$"],
encoding="shift_jis_2004",
)
god_slayer = god_slayer_factory.create(Path("/path/to/file.csv"))
for record in god_slayer:
print(record)
['0', '4062', '2069', '1993']
['1', '4279', '2171', '2108']
['2', '4285', '2152', '2133']
['3', '4434', '2268', '2166']
['4', '4243', '2207', '2036']
['5', '4369', '2283', '2086']
['6', '4345', '2213', '2132']
['7', '4117', '2163', '1954']
['8', '4155', '2146', '2009']
['9', '4031', '2151', '1880']
Note that file will be closeed automatically when variable god_slayer
goes out of scope.
Specification
Argument of GodSlayerFactory
property | type | defalut | explanation |
---|---|---|---|
header | Optional[List[str]] | None | If present, God Slayer will skip to the row after the header row |
partition | Optional[List[str]] | None | If present, God Slayer will skip partition rows |
footer | Optional[List[str]] | None | If present, God Slayer will stop iteration bedore footer row |
encoding | str | "utf-8" | Encoding to open CSV file |
How to match list of string with row
- List of strings has the same length as row
- All strings in the list are compared with the string at the same index in the row and must be one of the following:
- Same string
- Matched the regular expression
What is "Kami CSV"?
"Kami CSV" is a CSV that has become a non-normal form by adding headers, footers, intermediate lines, and notes even though the purpose is to export data. The etymology comes from Kami Excel. It's often found in government office or Legacy company service.
Contributing
Check CONTRIBUTING.md
Credits
This package was created with Cookiecutter and the audreyr/cookiecutter-pypackage project template.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for godslayer-1.0.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d4d3cc93316468aefc544bb4a5789b0207ea26a9989976861def3cc235693029 |
|
MD5 | c8f963a9a6725b28d2c8306cefaeb264 |
|
BLAKE2b-256 | 0c50a106806d0a28699347a9334549fa03c8ff3d724d98cc8dd057ae2f2bf939 |