def test_table_csv_delimiter(): source = '"header1";"header2"\n"value1";"value2"\n"value3";"value4"' dialect = CsvDialect(delimiter=";") with Table(source, scheme="text", format="csv", dialect=dialect) as table: assert table.header == ["header1", "header2"] assert table.read_data() == [["value1", "value2"], ["value3", "value4"]]
def test_table_csv_excel_tab(): source = "header1\theader2\nvalue1\tvalue2\nvalue3\tvalue4" dialect = CsvDialect(delimiter="\t") with Table(source, scheme="text", format="csv", dialect=dialect) as table: assert table.header == ["header1", "header2"] assert table.read_data() == [["value1", "value2"], ["value3", "value4"]]
def test_table_csv_skipinitialspace(): source = "header1, header2\nvalue1, value2\nvalue3, value4" dialect = CsvDialect(skip_initial_space=False) with Table(source, scheme="text", format="csv", dialect=dialect) as table: assert table.header == ["header1", "header2"] assert table.read_data() == [["value1", " value2"], ["value3", " value4"]]
def test_csv_parser_quotechar_is_empty_string(): source = b'header1,header2",header3\nvalue1,value2",value3' dialect = CsvDialect(quote_char="") with Resource(source, format="csv", dialect=dialect) as resource: resource.header == ["header1", 'header2"', "header3"] assert resource.read_rows() == [ {"header1": "value1", 'header2"': 'value2"', "header3": "value3"}, ]
def test_csv_parser_dialect_should_not_persist_if_sniffing_fails_issue_goodtables_228(): source1 = b"a;b;c\n#comment" source2 = b"a,b,c\n#comment" dialect = CsvDialect(delimiter=";") with Resource(source1, format="csv", dialect=dialect) as resource: assert resource.header == ["a", "b", "c"] with Resource(source2, format="csv") as resource: assert resource.header == ["a", "b", "c"]
def test_csv_parser_delimiter(): source = b'"header1";"header2"\n"value1";"value2"\n"value3";"value4"' dialect = CsvDialect(delimiter=";") with Resource(source, format="csv", dialect=dialect) as resource: assert resource.header == ["header1", "header2"] assert resource.read_rows() == [ {"header1": "value1", "header2": "value2"}, {"header1": "value3", "header2": "value4"}, ]
def test_csv_parser_escaping(): dialect = CsvDialect(escape_char="\\") with Resource("data/escaping.csv", dialect=dialect) as resource: assert resource.header == ["ID", "Test"] assert resource.read_rows() == [ {"ID": 1, "Test": "Test line 1"}, {"ID": 2, "Test": 'Test " line 2'}, {"ID": 3, "Test": 'Test " line 3'}, ]
def test_csv_parser_excel_tab(): source = b"header1\theader2\nvalue1\tvalue2\nvalue3\tvalue4" dialect = CsvDialect(delimiter="\t") with Resource(source, format="csv", dialect=dialect) as resource: assert resource.header == ["header1", "header2"] assert resource.read_rows() == [ {"header1": "value1", "header2": "value2"}, {"header1": "value3", "header2": "value4"}, ]
def test_csv_parser_skipinitialspace(): source = b"header1, header2\nvalue1, value2\nvalue3, value4" dialect = CsvDialect(skip_initial_space=False) with Resource(source, format="csv", dialect=dialect) as resource: assert resource.header == ["header1", "header2"] assert resource.read_rows() == [ {"header1": "value1", "header2": " value2"}, {"header1": "value3", "header2": " value4"}, ]
def test_csv_parser_quotechar(): source = b"%header1,header2%\n%value1,value2%\n%value3,value4%" dialect = CsvDialect(quote_char="%") with Resource(source, format="csv", dialect=dialect) as resource: assert resource.header == ["header1,header2"] assert resource.read_rows() == [ {"header1,header2": "value1,value2"}, {"header1,header2": "value3,value4"}, ]
def test_csv_parser_escapechar(): source = b"header1%,header2\nvalue1%,value2\nvalue3%,value4" dialect = CsvDialect(escape_char="%") with Resource(source, format="csv", dialect=dialect) as resource: assert resource.header == ["header1,header2"] assert resource.read_rows() == [ {"header1,header2": "value1,value2"}, {"header1,header2": "value3,value4"}, ]
def test_table_csv_escaping(): dialect = CsvDialect(escape_char="\\") with Table("data/escaping.csv", dialect=dialect) as table: assert table.header == ["ID", "Test"] assert table.read_data() == [ ["1", "Test line 1"], ["2", 'Test " line 2'], ["3", 'Test " line 3'], ]
def test_csv_parser_write_newline_crlf(tmpdir): dialect = CsvDialect(line_terminator="\r\n") source = Resource("data/table.csv") target = Resource(str(tmpdir.join("table.csv")), dialect=dialect) source.write(target) with target: assert target.dialect == {"lineTerminator": "\r\n"} with open(target.fullpath, "rb") as file: assert file.read().decode("utf-8") == "id,name\r\n1,english\r\n2,中国人\r\n"
def test_table_csv_dialect_should_not_persist_if_sniffing_fails_issue_goodtables_228( ): source1 = "a;b;c\n#comment" source2 = "a,b,c\n#comment" dialect = CsvDialect(delimiter=";") with Table(source1, scheme="text", format="csv", dialect=dialect) as table: assert table.header == ["a", "b", "c"] with Table(source2, scheme="text", format="csv") as table: assert table.header == ["a", "b", "c"]
def test_describe_whitespace_cells_with_skip_initial_space_issue_7(): source = "header1,header2\n1, \n2, \n3, \n" dialect = CsvDialect(skip_initial_space=True) resource = describe(source, scheme="text", format="csv", dialect=dialect) assert resource.schema == { "fields": [ {"name": "header1", "type": "integer"}, {"name": "header2", "type": "any"}, ] }
def test_table_csv_write_delimiter(tmpdir): source = "data/table.csv" target = str(tmpdir.join("table.csv")) dialect = CsvDialect(delimiter=";") with Table(source) as table: table.write(target, dialect=dialect) with Table(target, dialect=dialect) as table: assert table.header == ["id", "name"] assert table.read_data() == [["1", "english"], ["2", "中国人"]] assert table.dialect == {"delimiter": ";"}
def test_csv_parser_write_delimiter(tmpdir): dialect = CsvDialect(delimiter=";") source = Resource("data/table.csv") target = Resource(str(tmpdir.join("table.csv")), dialect=dialect) source.write(target) with target: assert target.header == ["id", "name"] assert target.dialect == {"delimiter": ";"} assert target.read_rows() == [ {"id": 1, "name": "english"}, {"id": 2, "name": "中国人"}, ]
def test_table_csv_quotechar_is_empty_string(): source = 'header1,header2",header3\nvalue1,value2",value3' dialect = CsvDialect(quote_char="") with Table(source, scheme="text", format="csv", dialect=dialect) as table: table.header == ["header1", 'header2"', "header3"] table.read_data() == [["value1", 'value2"', "value3"]]
def test_table_csv_escapechar(): source = "header1%,header2\nvalue1%,value2\nvalue3%,value4" dialect = CsvDialect(escape_char="%") with Table(source, scheme="text", format="csv", dialect=dialect) as table: assert table.header == ["header1,header2"] assert table.read_data() == [["value1,value2"], ["value3,value4"]]
def test_table_csv_quotechar(): source = "%header1,header2%\n%value1,value2%\n%value3,value4%" dialect = CsvDialect(quote_char="%") with Table(source, scheme="text", format="csv", dialect=dialect) as table: assert table.header == ["header1,header2"] assert table.read_data() == [["value1,value2"], ["value3,value4"]]