From b0407c867a5469a8aab398a4e158040d35b7e4db Mon Sep 17 00:00:00 2001 From: Cacahuete Date: Mon, 25 Jan 2021 23:50:25 +0100 Subject: [PATCH] fix_csv: bonus 2 --- fix_csv/fix_csv.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/fix_csv/fix_csv.py b/fix_csv/fix_csv.py index a189665..d0d5e50 100644 --- a/fix_csv/fix_csv.py +++ b/fix_csv/fix_csv.py @@ -6,9 +6,15 @@ import csv logging.basicConfig(level=logging.INFO) -def normalise(input, output, in_delimiter="|", in_quote='"'): +def normalise(input, output, in_delimiter=None, in_quote=None): """Normalise `input` CSV file into `output` file.""" Path(output).touch(exist_ok=True) + with Path(input).open("r", newline="") as in_file: + dialect = csv.Sniffer().sniff(in_file.read()) + if in_delimiter is None: + in_delimiter = dialect.delimiter + if in_quote is None: + in_quote = dialect.quotechar with Path(input).open("r", newline="") as in_file, Path(output).open( "w" ) as out_file: @@ -33,8 +39,8 @@ if __name__ == "__main__": 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='"') + parser.add_argument("--in-delimiter", dest="in_delimiter", default=None) + parser.add_argument("--in-quote", dest="in_quote", default=None) args = parser.parse_args()