80_csv.py 729 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. import csv
  2. def test(data: str, expected):
  3. ret = list(csv.reader(data.splitlines()))
  4. assert ret==expected, f"Expected {expected}, got {ret}"
  5. test("""a,b,c
  6. 1,2,3
  7. """, [['a', 'b', 'c'], ['1', '2', '3']])
  8. test("""a,b,c
  9. 1,2,"3"
  10. """, [['a', 'b', 'c'], ['1', '2', '3']])
  11. test("""a,b,c
  12. 1,2,'3'
  13. """, [['a', 'b', 'c'], ['1', '2', '\'3\'']])
  14. test('''a,b,c
  15. 1,2,"123"""
  16. ''', [['a', 'b', 'c'], ['1', '2', '123"']])
  17. test("""a,b,c,
  18. 1,2,3,
  19. """, [['a', 'b', 'c', ''], ['1', '2', '3', '']])
  20. test("""a,b ,c,
  21. 1,"22""33",3
  22. """, [['a', 'b ', 'c', ''], ['1', '22"33', '3']])
  23. ret = csv.DictReader("""a,b,c
  24. 1,2,3
  25. "4",5,6
  26. """.splitlines())
  27. assert list(ret)==[
  28. {'a': '1', 'b': '2', 'c': '3'},
  29. {'a': '4', 'b': '5', 'c': '6'},
  30. ]