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.1.1.tar.gz (19.4 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.1.1-py3-none-any.whl (15.3 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for godslayer-1.1.1.tar.gz
Algorithm Hash digest
SHA256 e2c177d0d7afb40b8abeae3bc57c8dbee914aecbf93ce51a4f40ffd36d37baac
MD5 4164fbf26b29ecbb14572d2c7534f51a
BLAKE2b-256 9b78179d8ec39e83ae8d8c34b92fa1017b7216a450e96b546e0909aae19aea7f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: godslayer-1.1.1-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.7

File hashes

Hashes for godslayer-1.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 59065c6f2f2a1fe05f24c9a3f49468c56a3d07bd0bd00e1d82523e615db4366a
MD5 f82819f3f6c4fec837d3680dbda57270
BLAKE2b-256 9567a604103034ea06b87063e2ad471ac46d1edec81f0f24c4da1f6f516863b2

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