No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.

57 líneas
1.9KB

  1. #!/usr/bin/env python3
  2. import datetime
  3. import re
  4. from argparse import ArgumentParser
  5. import pandas as pd
  6. KEY_VALUE_REGEX = r"(.+):(.+)"
  7. if __name__ == "__main__":
  8. parser = ArgumentParser()
  9. parser.add_argument("-f", "--file", required=True, help="Input txt file.")
  10. args = parser.parse_args()
  11. file = open(args.file, "r")
  12. content = file.read()
  13. file.close()
  14. serial_df = None
  15. p = re.compile(KEY_VALUE_REGEX)
  16. for part in content.split(";;;"):
  17. if part == "":
  18. break
  19. part = part.replace("\t", "\n").strip()
  20. time = None
  21. line_dict = dict(time=None)
  22. for line in part.split("\n"):
  23. if not line.startswith("!") or line == "" or line == "\n":
  24. if line_dict["time"] is None:
  25. time = line
  26. line_dict["time"] = [time]
  27. m = p.match(line)
  28. if m:
  29. key = m.group(1).strip().replace(" ", "_")
  30. value = m.group(2).replace("MHz", "").replace("---", "").strip()
  31. line_dict[key] = [value]
  32. if len(line_dict) > 1:
  33. #print("line:")
  34. #print(line_dict)
  35. #print("serial_df:")
  36. #print(serial_df)
  37. if serial_df is None:
  38. serial_df = pd.DataFrame.from_dict(line_dict, orient="columns",)
  39. else:
  40. serial_df = pd.concat([serial_df, pd.DataFrame.from_dict(line_dict, orient="columns")])
  41. serial_df = serial_df.copy()
  42. serial_df["datetime"] = pd.to_datetime(
  43. serial_df["time"].apply(lambda x: datetime.datetime.fromtimestamp(int(x)))
  44. )
  45. serial_df.to_csv(args.file.replace("txt", "csv"))
  46. #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"])
  47. #print(serial_df.to_string())