Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

72 lines
1.8KB

  1. #!/usr/bin/env python3
  2. import csv
  3. import datetime
  4. import re
  5. from argparse import ArgumentParser
  6. import pandas as pd
  7. KEY_VALUE_REGEX = r"(.+):(.+)"
  8. if __name__ == "__main__":
  9. parser = ArgumentParser()
  10. parser.add_argument("-f", "--file", required=True, help="Input txt file.")
  11. args = parser.parse_args()
  12. file = open(args.file, "r")
  13. content = file.read()
  14. file.close()
  15. header = ["time"]
  16. csv_lines = list()
  17. p = re.compile(KEY_VALUE_REGEX)
  18. for part in content.split(";;;"):
  19. if part == "":
  20. break
  21. part = part.replace("\t", "\n").strip()
  22. csv_line = list()
  23. time = None
  24. for line in part.split("\n"):
  25. if not line.startswith("!") or line == "" or line == "\n":
  26. if time is None:
  27. time = line
  28. csv_line.append(time)
  29. m = p.match(line)
  30. if m:
  31. key = m.group(1).strip().replace(" ", "_")
  32. value = m.group(2).replace("MHz", "").strip()
  33. if key not in header:
  34. header.append(key)
  35. csv_line.append(value)
  36. if len(csv_line) > 1:
  37. #print(csv_line)
  38. csv_lines.append(csv_line)
  39. outputfile = open(args.file.replace("txt", "csv"), "w")
  40. writer = csv.writer(outputfile, delimiter=",", lineterminator="\n", escapechar='\\')
  41. writer.writerow(header)
  42. #print(all_csv_lines)
  43. for l in csv_lines:
  44. #print(l)
  45. writer.writerow(l)
  46. outputfile.close()
  47. outputfile = open(args.file.replace("txt", "csv"), "r")
  48. serial_df = pd.read_csv(outputfile)
  49. serial_df["datetime"] = pd.to_datetime(
  50. serial_df["time"].apply(lambda x: datetime.datetime.fromtimestamp(x))
  51. )
  52. serial_df.to_csv(args.file.replace("txt", "csv"))
  53. outputfile.close()