Advertisement
Guest User

Untitled

a guest
Oct 21st, 2019
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.95 KB | None | 0 0
  1. #!/usr/bin/env python3
  2.  
  3. import pandas as pd
  4. import numpy as np
  5. import re
  6.  
  7. number = re.compile("(-)?(\d+)((\.|,)(\d+))?([-+ ](\d))?")
  8.  
  9. x = pd.read_csv("raw.csv", header=None)
  10.  
  11. def make_number(m):
  12. sign = m.group(1) == '-'
  13. first = int(m.group(2))
  14. if m.group(5):
  15. second = int(m.group(5)) / 10.0**len(m.group(5))
  16. else:
  17. second = 0
  18. x = first + second
  19. extra = m.group(6)
  20. if extra:
  21. extra = int(extra)
  22. if sign:
  23. x = -x
  24. return x, extra
  25.  
  26. f = open("gost_4401.csv", "w")
  27. last_extra = None
  28. for (i, l) in enumerate(x.iterrows()):
  29. if np.isnan(l[1][1]):
  30. continue
  31. values, extra = list(zip(*list(map(lambda x: make_number(number.match(str(x).strip())), l[1]))))
  32. if last_extra is None:
  33. last_extra = extra
  34. else:
  35. last_extra = list(map(lambda x: x[1] if not (x[1] is None) else x[0], zip(last_extra,extra)))
  36.  
  37. values = list(map(lambda x: x[1]*10**x[0] if not (x[0] is None) else x[1], zip(last_extra, values)))
  38. f.write(",".join(map(str,values))+"\n")
  39. # print(i,map(l)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement