Skip to main content

Provides generator to read Kami (god) CSV record as list of string.

Project description

⛩️God Slayer⚔️

Test CodeQL Code Coverage Maintainability Dependabot Python versions X URL

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

cf. list_string_matcher.py

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

godslayer-1.2.0.tar.gz (19.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

godslayer-1.2.0-py3-none-any.whl (15.3 kB view details)

Uploaded Python 3

File details

Details for the file godslayer-1.2.0.tar.gz.

File metadata

  • Download URL: godslayer-1.2.0.tar.gz
  • Upload date:
  • Size: 19.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for godslayer-1.2.0.tar.gz
Algorithm Hash digest
SHA256 6777d1677d52be6638692d2f5cc0c3fb5f63ee42e2e31c6962133803f33e735d
MD5 995996a7351e5c5f7bdef4cc8382e53c
BLAKE2b-256 b38b7d549fff2b0484abe97ce4b17fbb9b03a7c1ad8da1e8d78d40c683f1a5ed

See more details on using hashes here.

File details

Details for the file godslayer-1.2.0-py3-none-any.whl.

File metadata

  • Download URL: godslayer-1.2.0-py3-none-any.whl
  • Upload date:
  • Size: 15.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for godslayer-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f7102a7904cae347ce0b72059bab63583880e865b197c3da3b62ebbd74f99d72
MD5 a540d86c0617cb8b44530fa383ac0a99
BLAKE2b-256 623e26b84dbb9b4de4307c63e3670f50bb92601387c49643876d2060394c8d7f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page