use_data_generate_csv12.py 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. import json
  2. import os
  3. def init_shunxu():
  4. with open('cedian.txt', 'r', encoding='utf8') as f:
  5. datas = [i.strip() for i in f.readlines() if i.strip()]
  6. result_map = dict()
  7. for data in datas:
  8. da = data.split('\t')
  9. point = Mesurepoint(da[0], da[2], da[4], da[5], da[6])
  10. if point.wind_factory in result_map.keys():
  11. if point.wind_no in result_map[point.wind_factory].keys():
  12. result_map[point.wind_factory][point.wind_no].append(point)
  13. else:
  14. result_map[point.wind_factory][point.wind_no] = [point]
  15. else:
  16. result_map[point.wind_factory] = {point.wind_no: [point]}
  17. return result_map
  18. class Mesurepoint(object):
  19. def __init__(self, wind_factory, wind_no, cn_name, shuxun, en_name):
  20. self.wind_factory = wind_factory
  21. self.wind_no = wind_no
  22. self.cn_name = cn_name
  23. self.shuxun = int(shuxun) + 16388
  24. self.en_name = en_name
  25. def mult_solver(wind_maps):
  26. for wind_factory in wind_maps.keys():
  27. for wind_no in wind_maps[wind_factory].keys():
  28. file_dir = os.path.join('104_origin', wind_factory)
  29. os.makedirs(file_dir, exist_ok=True)
  30. line_str = '\n'.join(wind_maps[wind_factory][wind_no])
  31. with open(os.path.join(file_dir, '风机' + str(wind_no) + '.csv'), 'w') as f:
  32. f.write(line_str)
  33. f.flush()
  34. def gene_data(wind_maps, data):
  35. wind_factories = result_map.keys()
  36. for wind_factory in wind_factories:
  37. if wind_factory not in wind_maps.keys():
  38. wind_maps[wind_factory] = {}
  39. for wind_no in result_map[wind_factory].keys():
  40. is_first = False
  41. if wind_no not in wind_maps[wind_factory].keys():
  42. wind_maps[wind_factory][wind_no] = list()
  43. is_first = True
  44. shunxuhaos = [point.shuxun for point in result_map[wind_factory][wind_no]]
  45. shunxuhaos.insert(0, '-1')
  46. if is_first:
  47. cols = ['time']
  48. for point in result_map[wind_factory][wind_no]:
  49. cols.append(point.cn_name)
  50. wind_maps[wind_factory][wind_no].append(','.join(cols))
  51. datas = [str(data[str(i)] if str(i) in data.keys() else "") for i in shunxuhaos]
  52. if len([i for i in datas if i != ""]) > 1:
  53. wind_maps[wind_factory][wind_no].append(','.join(datas))
  54. def generate_data(all_datas):
  55. wind_maps = dict()
  56. for data in all_datas:
  57. gene_data(wind_maps, data)
  58. mult_solver(wind_maps)
  59. if __name__ == '__main__':
  60. # file_path = r'C:\Users\wzl\Desktop\241\2404 (复件)\20250310.txt'
  61. file_path = '原始数据.txt'
  62. result_dict = dict()
  63. begin_end = [16388, 22744]
  64. result_map = init_shunxu()
  65. all_datas = list()
  66. with open(file_path, 'r') as f:
  67. line = f.readline()
  68. while line:
  69. fixed_str = line.replace('{', '{"').replace(':"', '":"').replace(',', ',"')
  70. line_data = {}
  71. line_data = json.loads(fixed_str)
  72. all_datas.append(line_data)
  73. line = f.readline()
  74. generate_data(all_datas)