|
- #!/usr/bin/env python3
- 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()
-
- serial_df = None
- p = re.compile(KEY_VALUE_REGEX)
-
- for part in content.split(";;;"):
- if part == "":
- break
- part = part.replace("\t", "\n").strip()
- time = None
- line_dict = dict(time=None)
- for line in part.split("\n"):
- if not line.startswith("!") or line == "" or line == "\n":
- if line_dict["time"] is None:
- time = line
- line_dict["time"] = [time]
- m = p.match(line)
- if m:
- key = m.group(1).strip().replace(" ", "_")
- value = m.group(2).replace("MHz", "").replace("---", "").strip()
-
- line_dict[key] = [value]
-
- if len(line_dict) > 1:
- #print("line:")
- #print(line_dict)
- #print("serial_df:")
- #print(serial_df)
- if serial_df is None:
- serial_df = pd.DataFrame.from_dict(line_dict, orient="columns",)
- else:
- serial_df = pd.concat([serial_df, pd.DataFrame.from_dict(line_dict, orient="columns")])
-
- serial_df = serial_df.copy()
- serial_df["datetime"] = pd.to_datetime(
- serial_df["time"].apply(lambda x: datetime.datetime.fromtimestamp(int(x)))
- )
- serial_df.to_csv(args.file.replace("txt", "csv"))
-
- #serial_df = serial_df.filter(["datetime", "LTE_bw", "LTE_SCC2_bw", "LTE_SCC3_bw", "LTE_SCC4_bw", "SCC1_NR5G_bw", "NR5G_dl_bw", "NR5G_ul_bw", "LTE_SCC1_bw", "NR5G_bw"])
- #print(serial_df.to_string())
|