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="Find domain names matching topic keywords") parser.add_argument("file") parser.add_argument("--keywords", nargs="+", required=True) args = parser.parse_args() writer = csv.writer(sys.stdout) writer.writerow(["domain", "topic_matches"]) for domain in domains(args.file): name = domain.rsplit(".", 1)[0] matches = [word for word in args.keywords if word.lower() in name] if matches: writer.writerow([domain, ";".join(matches)])