csvFTW
alpha 0.6 (released 2015-11-03)
- Martin Larsson
- E-mail: [email protected]
- Homepage: www.martinlarsson.net
GNU General Public License, version 3
csvFTW is a program that modifies csv files for you in accordance with certain criterias. More specifically, you supply the program with a data file and a modify file. The program then goes through the modify file and changes all dthe ata cells of the input file in accordence with a certain rule set.
In order to run this program, you need Python installed and ready to go.
You run the program by typing
python csvFTW.py mode inputFile instructionFile outputFile delimiter
with all the files you want to use placed in the same directory as csvFTW.py
. Here, mode
refers to one of the two modes the program can be set to: remove
or modify
. inputFile
refers to your master data file. This has to be a csv
file with a header row specifying the column names and at least one row of data after that. instructionFile
refers to your instruction file. This also has to be a csv
file with a header row specifying the column names and at least one row of data after that. outputFile
refers to the file that you want the output to be written to. If this file already exists, it will be overwritten. If it doesn't exists, it will be created. delimiter
refers to the delimiter character that is, and should be used, in the csv data. This character should be given within quotation marks.
In your instruction file, you mark the columns that you want the program to look at by a letter and then the @
symbol, followed by the column name in the input file. Currently, there are two commands that you can useto define checks:
v@
- Vertabim check: Makes the program check to see if the cells in this column match with the cells in the input file.w@
- Words check: Makes the program check to see if the cells in this column match with the cells in the input file. This markup uses a special markup to look for different vertabim matches in one fell swoop. Elements are separated by+
, like so:x+y
. Here, bothx
andy
would be considered matches if it shows up in the input data. Notice however that plusses cannot be part of the content being matched in the input data.i@
- Integer check: Makes the program check to see if the cells in this column match with the cells in the input file. This markup only deals with integers and a special syntax can be used to look for several of them in one fell swoop. First, elements can be separated by commas, like so:x,y
. Further, each element can be a range between two numbers (with the smaller one specified first). For example,1-5
would be the same thing as writing1,2,3,4,5
. An example of a integer check could then be1-3,5-8,10
which would match with all numbers between 1 and 10 except for 4 and 9. In addition, using a*
(not applicable in the range option) means that any number passes.
Depending on the mode the program is run in, it will behave in different ways:
In this mode, the program will, for each row in the instruction file, look at all the v@
, w@
, and i@
tags. If all the cells in a row of the instruction file where the column name is marked with v@
, w@
, or i@
match with all the cells for those column names in one or several rows of the input data, the program will remove these rows from the input data.
The program will, for each row in the instruction file, first look at all the v@
, w@
, and i@
tags. If all the cells in a row of the instruction file where the column name is marked with v@
, w@
, or i@
match with all the cells for those column names in one or several rows of the input data, the program will look in the instruction file again for columns tagged with m@
(which stands for modify
). For all these, the content of the cells in the instruction file will replace whatever is present in the input file for the output data, or add a new column with the name specified after the @
sign.
- Added a new markup:
w@
(words).
- Added the mode option so that the program can be run in two different modes:
remove
andmodify
.
- Fixed some bugs.
- Changed the name from
csvMagic
tocsvFTW
. - Added the star option to
i@
(integer). - Fixed some bugs.
- Changed the
c@
(change) syntax tom@
(modify). - Added a new markup:
i@
(integer). - Made it so that column names specified in the modify file that doesn't exist in the input data are created for the output.
- Added several FYI (for your information) and result messages that are printed to the terminal to better help the user understand what the program is doing and what things one possibly might want to fix in the data.
- Cleaned up some of the code.
- Added the most basic funcionality: Look for matching rows between the modify and the input files and create an output file where the