pocketpy/tests/80_csv.py
2023-11-29 09:52:58 +08:00

43 lines
798 B
Python

import csv
def test(data: str, expected):
ret = list(csv.reader(data.splitlines()))
assert ret==expected, f"Expected {expected}, got {ret}"
test("""a,b,c
1,2,3
""", [['a', 'b', 'c'], ['1', '2', '3']])
test("""a,b,c
1,2,"3"
""", [['a', 'b', 'c'], ['1', '2', '3']])
test("""a,b,c
1,2,"3,,"
""", [['a', 'b', 'c'], ['1', '2', '3,,']])
test("""a,b,c
1,2,'3'
""", [['a', 'b', 'c'], ['1', '2', '\'3\'']])
test('''a,b,c
1,2,"123"""
''', [['a', 'b', 'c'], ['1', '2', '123"']])
test("""a,b,c,
1,2,3,
""", [['a', 'b', 'c', ''], ['1', '2', '3', '']])
test("""a,b ,c,
1,"22""33",3
""", [['a', 'b ', 'c', ''], ['1', '22"33', '3']])
ret = csv.DictReader("""a,b,c
1,2,3
"4",5,6
""".splitlines())
assert list(ret)==[
{'a': '1', 'b': '2', 'c': '3'},
{'a': '4', 'b': '5', 'c': '6'},
]