Advertisement
Guest User

Untitled

a guest
Mar 19th, 2019
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.40 KB | None | 0 0
  1. import re
  2.  
  3. def validCSV(filename):
  4.  
  5. pattern = re.compile(r'(\"\w+\"\,)+\"\w+\"')
  6. sF = 0
  7. sF_lst = []
  8. sA = 0
  9. sA_lst = []
  10.  
  11. with open(filename) as myFile:
  12.  
  13. for line in myFile:
  14. if(not line.startswith("#")):
  15. firstline = line
  16. break
  17.  
  18. laenge = len(firstline.split(","))
  19. with open(filename) as myFile:
  20.  
  21. for id,line in enumerate(myFile):
  22. if(not line.startswith("#")):
  23.  
  24. match = pattern.match(line)
  25.  
  26. if(match == None):
  27. sF = 1
  28. sF_lst.append(id)
  29.  
  30. elif(len(line.split(",")) != laenge):
  31. sA = 1
  32. sA_lst.append(id)
  33.  
  34.  
  35. if(sF == 1):
  36. st = "Syntaxfehler: "
  37. for ele in sF_lst:
  38. st = st + "Zeile " + str(ele) + ", "
  39. return st.strip()[0:-1]
  40.  
  41. elif(sA == 1):
  42. st = "Falsche Spaltenanzahl: "
  43. for ele in sA_lst:
  44. st = st + "Zeile " + str(ele) + ", "
  45. return st.strip()[0:-1]
  46. else:
  47. return "OK"
  48.  
  49.  
  50. def gleicheEintrage(filename, spaltenname):
  51.  
  52. d = {}
  53. ret = {}
  54.  
  55. with open(filename) as myFile:
  56. for line in myFile:
  57. if(not line.startswith("#")):
  58. firstline = line
  59. break
  60.  
  61. for idx,ele in enumerate(firstline.split(",")):
  62. if(spaltenname in ele):
  63. spalten_index = idx
  64. break
  65.  
  66. with open(filename) as myFile:
  67. for line in myFile:
  68. if(not line.startswith("#")):
  69. line = line.split(",")
  70. if(line[spalten_index].replace('"',"") != spaltenname):
  71.  
  72. if(line[spalten_index] not in d):
  73. d[line[spalten_index]] = 1
  74. else:
  75. d[line[spalten_index]] +=1
  76.  
  77. for k,v in d.items():
  78. if(v > 1):
  79. ret[k] = v
  80.  
  81. if(ret == {}):
  82. for k,v in d.items():
  83. d[k] = "UNQIUE"
  84. return d
  85.  
  86. return ret
  87.  
  88.  
  89. print(validCSV("CSV.txt"))
  90. print(gleicheEintrage("CSV.txt", "Vorname"))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement