diff --git a/doc/source/release.rst b/doc/source/release.rst index e0532b6be136f..584cc0c8d2b7a 100644 --- a/doc/source/release.rst +++ b/doc/source/release.rst @@ -175,6 +175,7 @@ pandas 0.13 with datetimes (:issue:`4532`) - Fix arithmetic with series/datetimeindex and ``np.timedelta64`` not working the same (:issue:`4134`) and buggy timedelta in numpy 1.6 (:issue:`4135`) + - Fix bug in ``pd.read_clipboard`` on windows with PY3 (:issue:`4561`); not decoding properly pandas 0.12 =========== diff --git a/pandas/compat/__init__.py b/pandas/compat/__init__.py index 6070c0e9c5379..7a444ab01e10a 100644 --- a/pandas/compat/__init__.py +++ b/pandas/compat/__init__.py @@ -55,11 +55,11 @@ def isidentifier(s): return s.isidentifier() - def str_to_bytes(s, encoding='ascii'): - return s.encode(encoding) + def str_to_bytes(s, encoding=None): + return s.encode(encoding or 'ascii') - def bytes_to_str(b, encoding='utf-8'): - return b.decode(encoding) + def bytes_to_str(b, encoding=None): + return b.decode(encoding or 'utf-8') # have to explicitly put builtins into the namespace range = range diff --git a/pandas/io/clipboard.py b/pandas/io/clipboard.py index 798f30e85544f..c4bea55ce2714 100644 --- a/pandas/io/clipboard.py +++ b/pandas/io/clipboard.py @@ -1,4 +1,5 @@ """ io on the clipboard """ +from pandas import compat, get_option from pandas.compat import StringIO def read_clipboard(**kwargs): # pragma: no cover @@ -15,6 +16,13 @@ def read_clipboard(**kwargs): # pragma: no cover from pandas.util.clipboard import clipboard_get from pandas.io.parsers import read_table text = clipboard_get() + + # try to decode (if needed on PY3) + if compat.PY3: + try: + text = compat.bytes_to_str(text,encoding=kwargs.get('encoding') or get_option('display.encoding')) + except: + pass return read_table(StringIO(text), **kwargs)