import argparse import csv import gzip import sys def domains(path): with gzip.open(path, "rt", encoding="utf-8") as source: for line in source: domain = line.strip().lower().rstrip(".") if domain: yield domain parser = argparse.ArgumentParser(description="Shortlist short removed domain names") parser.add_argument("file") parser.add_argument("--tld", default="com") parser.add_argument("--max-length", type=int, default=8) args = parser.parse_args() if args.max_length < 1: parser.error("max-length must be positive") suffix = "." + args.tld.lower().lstrip(".") writer = csv.writer(sys.stdout) writer.writerow(["domain", "name_length"]) for domain in domains(args.file): if domain.endswith(suffix): name = domain[:-len(suffix)] if name.isascii() and name.isalpha() and len(name) <= args.max_length: writer.writerow([domain, len(name)])