#!/usr/bin/env python import argparse import csv import sys def split(src, delimiter, quotechar, fields, separator): reader = csv.reader(src, delimiter=delimiter, quotechar=quotechar) for line in reader: show = [] for field in fields: try: show.append(line[field]) except IndexError: pass sys.stdout.write(separator.join(show) + "\n") if __name__ == "__main__": parser = argparse.ArgumentParser(description="Split string streams") parser.add_argument("--delimiter", "-d", type=str, default=",") parser.add_argument("--fields", "-f", type=int, nargs="+", default=[0]) parser.add_argument("--quotechar", "-q", type=str, default='"') parser.add_argument("--source", "-s", type=str) parser.add_argument( "--separator", type=str, default=" ", help="Output separator", ) args = parser.parse_args() if args.source is None: source = sys.stdin else: source = open(args.source, "r") split( source, args.delimiter, args.quotechar, args.fields, separator=args.separator, )