Tool to convert CSV files based on JSON config.
Project description
A simple tool that uses a JSON config file (or a config dict) to convert one CSV to another.
Simplest use case is to just list the new headers and link them to the old headers, like so:
{
"New Column Header One": "Old Column Header One",
"New Column Header Two": "Old Column Header Two"
}
A slightly more useful version specifies a default to use (implemented using the "or" operator value_from_old_column or default
):
{
"New Header One": {
"old_column": "Old Header One",
"default": "DEFAULT VALUE FOR ONE"
},
"New Header Two": {
"old_column": "Old Header Two",
"default": "DEFAULT VALUE FOR TWO"
}
}
The third and final currently implemented option is to use a lambda function (use of full functions is planned):
{
"New Header One": {
"old_column": "Old Header One",
"default": "DEFAULT FOR ONE",
"lambda": "lambda a, b: str(a.get(b.get('old_column'))).lower()"
},
"New Header Two": {
"old_column": "Old Header Two",
"default": "DEFAULT FOR TWO",
"lambda": "lambda a, b: str(a.get(b.get('old_column'))).lower()"
}
}
It will run the lambda as:
item['lambda'] = "lambda a, b: str(a.get(b.get('old_column'))).lower()"
exec(f"c = {item.get('lambda')}", globals())
return c(line, item)
Where line
is the current line of the source CSV, and item
is the current element from the JSON file (the current column).
Usage:
from csv_converter import CSVConverter
converter = CSVConverter(config_file_name='path-to-config.json')
output = converter.convert(input_file_name='path-to-source.csv')
# For multiple files, either feed them in as a list:
output = converter.convert(input_file_name=['path-to-file-one.csv', 'path-to-file-two.csv'])
#or re-use the same converter with the "append_mode" flag set to True -- this will make it remember all previous files
converter = CSVConverter(config_file_name='path-to-config.json', append_mode=True)
output_of_file_one = converter.convert(input_file_name='path-to-file-one.csv')
output_of_file_one_and_two = converter.convert(input_file_name='path-to-file-two.csv')
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
csv_converter-0.0.5.tar.gz
(3.9 kB
view hashes)
Built Distribution
Close
Hashes for csv_converter-0.0.5-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 92eda0fdc28da74fd6510deb0d416aefb8213f129db7718e0324cea878a22a9f |
|
MD5 | 3ed9339d03ca89f6d758cbdb5eb0fd96 |
|
BLAKE2b-256 | f2b9519a8bb23fbadd6e3eb1464d7c404c0881da45a53ecfc7602fd61e5bfa94 |