csv.py 972 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. QUOTE_MINIMAL = None
  2. class Dialect(object):
  3. pass
  4. def register_dialect(name, d):
  5. pass
  6. class reader(object):
  7. def __init__(self, csvfile, dialect="excel", **fmtparams):
  8. self.i = 0
  9. self.lines = []
  10. for line in csvfile:
  11. elems = []
  12. elem = []
  13. inQuote = False
  14. skip = 0
  15. for i, c in enumerate(line):
  16. if skip > 0:
  17. skip -= 1
  18. continue
  19. if inQuote:
  20. if c == '"' and not line.startswith('""', i):
  21. inQuote = False
  22. elif c == '"' and line.startswith('""', i):
  23. elem.append(c)
  24. skip = 1
  25. else:
  26. elem.append(c)
  27. else:
  28. if c == '"':
  29. inQuote = True
  30. elif c == ';':
  31. elems.append("".join(elem))
  32. elem = []
  33. else:
  34. elem.append(c)
  35. if line:
  36. elems.append("".join(elem))
  37. self.lines.append(elems)
  38. def __iter__(self):
  39. self.i = 0
  40. return self
  41. def __next__(self):
  42. try:
  43. line = self.lines[self.i]
  44. self.i += 1
  45. return line
  46. except IndexError:
  47. raise StopIteration