python copybook parser
Project description
Copybook
Copybook is a python module for parsing VSAM copybooks.
Features
- Supports all numeric PIC variations including:
- integers
- floats described with dot notation
- floats described with V notation
- leading SIGNED
- trailing SIGNED
- Character PIC notations
- Groups
- OCCURS clauses
- REDEFINES clauses
In addition, it provides indexes of column locations to help with parsing fixed width files based on positions within each line
Installation
pip install copybook
Usage
Copybook provides two methods for parsing copybooks: parse_file and parse_string. The result is a FieldGroup object that represents the root of the copybook tree.
Examples:
import copybook
text = """
01 WORK-BOOK.
10 TAX-RATE PIC S9(13)V9(2)
SIGN LEADING SEPARATE.
"""
root = copybook.parse_string(text)
Using Copybook module to parse a fixed width line
The FieldGroup object provides a flatten method that return a flat list of Field objects.
Example:
import copybook
text = """
01 WORK-BOOK.
10 TAX-RATE PIC S9(13)V9(2)
SIGN LEADING SEPARATE.
10 AMOUNT PIC S9(4)V9(2).
"""
# copybook also provides a parse_file method that receives a text filename
root = copybook.parse_string(text)
# flatten returns a list of Fields and FieldGroups instead of traversing the tree
list_of_fields = root.flatten()
# dummy sample input
line = " -13452987654"
# loop over the fields and parse the relevant position in the line
for field in list_of_fields:
# FieldGroups are Copybook groups and contain Field objects as children
if type(field)==copybook.Field:
# each Field has a start_pos and a get_total_length method
# to identify the position within the raw line input
str_field = line[field.start_pos:field.start_pos+field.get_total_length()]
# Field provides a parse method that returns a str, int, or float based on the PIC
print(f"{field.name}: {field.parse(str_field)}")
Development
PRs are always welcome!
Support
If you encounter an unsupported copybook feature, please paste the copybook example along with whatever logs or error message you have received and open an issue.
Gratitude
Copybook uses the awesome PyParsing library for tokenization
License
MIT
Project details
Release history Release notifications | RSS feed
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file copybook-1.0.16.tar.gz.
File metadata
- Download URL: copybook-1.0.16.tar.gz
- Upload date:
- Size: 6.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a86ab10a9cebcff5f1de37ba35fa94eb2c1ed19d72b16e3424b40322f72fd10a
|
|
| MD5 |
83ab59eaf6908cd6979fb140aaacb9a6
|
|
| BLAKE2b-256 |
6dbce1de3f0b0715ea86a3d95c144f84b87d7cad70a4854a42b4f679b5685051
|
File details
Details for the file copybook-1.0.16-py3-none-any.whl.
File metadata
- Download URL: copybook-1.0.16-py3-none-any.whl
- Upload date:
- Size: 7.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
35c085fb828a4fc25a9f2c3db3b82eda929764c9748f738b139b67d35afcba19
|
|
| MD5 |
b694ce7046491fcb08cd29b2952d6254
|
|
| BLAKE2b-256 |
d5c1a593f2fe9bf3fc408d5fae081c7a18052a602d8b07c2873f72ddc368eca2
|