|
- #!/usr/bin/env python3
- import csv
- import datetime
- import re
- from argparse import ArgumentParser
- import pandas as pd
-
- KEY_VALUE_REGEX = r"(.+):(.+)"
-
-
- if __name__ == "__main__":
-
- parser = ArgumentParser()
- parser.add_argument("-f", "--file", required=True, help="Input txt file.")
- args = parser.parse_args()
-
- file = open(args.file, "r")
- content = file.read()
- file.close()
-
- header = ["time"]
- csv_lines = list()
- p = re.compile(KEY_VALUE_REGEX)
-
- for part in content.split(";;;"):
- if part == "":
- break
- part = part.replace("\t", "\n").strip()
-
- csv_line = list()
- time = None
- for line in part.split("\n"):
- if not line.startswith("!") or line == "" or line == "\n":
- if time is None:
- time = line
- csv_line.append(time)
- m = p.match(line)
- if m:
- key = m.group(1).strip().replace(" ", "_")
- value = m.group(2).replace("MHz", "").strip()
-
- if key not in header:
- header.append(key)
-
- csv_line.append(value)
- if len(csv_line) > 1:
- #print(csv_line)
- csv_lines.append(csv_line)
-
-
-
- outputfile = open(args.file.replace("txt", "csv"), "w")
- writer = csv.writer(outputfile, delimiter=",", lineterminator="\n", escapechar='\\')
- writer.writerow(header)
- #print(all_csv_lines)
- for l in csv_lines:
- #print(l)
- writer.writerow(l)
-
- outputfile.close()
-
- outputfile = open(args.file.replace("txt", "csv"), "r")
- serial_df = pd.read_csv(outputfile)
- serial_df["datetime"] = pd.to_datetime(
- serial_df["time"].apply(lambda x: datetime.datetime.fromtimestamp(x))
- )
- serial_df.to_csv(args.file.replace("txt", "csv"))
- outputfile.close()
-
-
|