import logging from pathlib import Path import csv logging.basicConfig(level=logging.INFO) def normalise(input, output, in_delimiter="|", in_quote='"'): """Normalise `input` CSV file into `output` file.""" Path(output).touch(exist_ok=True) with Path(input).open("r", newline="") as in_file, Path(output).open( "w" ) as out_file: reader = csv.reader(in_file, delimiter=in_delimiter, quotechar=in_quote) writer = csv.writer( out_file, delimiter=",", quotechar=in_quote, quoting=csv.QUOTE_MINIMAL, lineterminator="\n", ) for row in reader: row = [element.replace('"', '"""') for element in row] writer.writerow(row) if __name__ == "__main__": import argparse parser = argparse.ArgumentParser(description="Smol prog to normalise CSV files.") parser.add_argument("input") parser.add_argument("output") parser.add_argument("--in-delimiter", dest="in_delimiter", default="|") parser.add_argument("--in-quote", dest="in_quote", default='"') args = parser.parse_args() normalise( input=args.input, output=args.output, in_delimiter=args.in_delimiter, in_quote=args.in_quote, )