diff --git a/pandas/io/parsers.py b/pandas/io/parsers.py index 2034d4fa899ce..8f8e3151d56e6 100644 --- a/pandas/io/parsers.py +++ b/pandas/io/parsers.py @@ -526,6 +526,8 @@ def __init__(self, f, engine=None, **kwds): if kwds.get('dialect') is not None: dialect = kwds['dialect'] + if dialect in csv.list_dialects(): + dialect = csv.get_dialect(dialect) kwds['delimiter'] = dialect.delimiter kwds['doublequote'] = dialect.doublequote kwds['escapechar'] = dialect.escapechar diff --git a/pandas/tests/test_frame.py b/pandas/tests/test_frame.py index 1aa734c4834de..6cb80bf03172e 100644 --- a/pandas/tests/test_frame.py +++ b/pandas/tests/test_frame.py @@ -5982,6 +5982,15 @@ def _check_df(df,cols=None): cols = ['b','a'] _check_df(df,cols) + def test_read_csv_dialect(self): + df = pd.DataFrame({'fruit':['apple'], 'vegetable':['broccoli']}) + csv.register_dialect("mydialect", delimiter="\t") + with ensure_clean() as path: + df.to_csv(path, sep='\t') + rc = pd.read_csv(path, dialect='mydialect', index_col=0) + assert_frame_equal(df, rc) + csv.unregister_dialect("mydialect") + @slow def test_to_csv_moar(self): path = '__tmp_to_csv_moar__'