2015-09-05 27 views
6

データフレームデータをクリップボードに渡してExcelに貼り付けることができます。問題は文字'\xe9'がそうのように、エンコードの問題を引き起こしている、次のとおりです。Python Pandas to_clipboard()UnicodeEncodeError: 'ascii'コーデックで文字をエンコードできません

>>> df.to_clipboard() 
Traceback (most recent call last): 
    File "C:\Python34\lib\site-packages\pandas\util\clipboard.py", line 65, in winSetClipboard 
    hCd = ctypes.windll.kernel32.GlobalAlloc(GMEM_DDESHARE, len(bytes(text))+1) 
TypeError: string argument without an encoding 

During handling of the above exception, another exception occurred: 

Traceback (most recent call last): 
    File "<pyshell#51>", line 1, in <module> 
    df.to_clipboard() 
    File "C:\Python34\lib\site-packages\pandas\core\generic.py", line 1028, in to_clipboard 
    clipboard.to_clipboard(self, excel=excel, sep=sep, **kwargs) 
    File "C:\Python34\lib\site-packages\pandas\io\clipboard.py", line 98, in to_clipboard 
    clipboard_set(objstr) 
    File "C:\Python34\lib\site-packages\pandas\util\clipboard.py", line 68, in winSetClipboard 
    hCd = ctypes.windll.kernel32.GlobalAlloc(GMEM_DDESHARE, len(bytes(text, 'ascii'))+1) 
UnicodeEncodeError: 'ascii' codec can't encode character '\xe9' in position 543793: ordinal not in range(128) 

私は文字をデコードし、それがto_clipboard()のドキュメントを読んだ後アクセントé

>>> '\xe9'.encode().decode() 
'é' 

だ、私はそれが言うに気づきました: 他のキーワードはto_csvに渡されます。他のキーワードでは、to_csv()からのキーワード引数をとります。具体的にはencoding='cp1252'を使用します。

私はこれをしようとすると、to_clipboard()encodingキーワードを認識しません:

df.to_clipboard(encoding='cp1252') 
    File "C:\Python34\lib\site-packages\pandas\core\generic.py", line 1028, in to_clipboard 
    clipboard.to_clipboard(self, excel=excel, sep=sep, **kwargs) 
    File "C:\Python34\lib\site-packages\pandas\io\clipboard.py", line 95, in to_clipboard 
    objstr = obj.to_string(**kwargs) 
TypeError: to_string() got an unexpected keyword argument 'encoding' 

は、クリップボード(ASCIIと非ASCIIの両方)に、すべてのデータを渡す方法はありますか?

+0

私は問題を再現しましたが、修正できず、クリップボードを台無しにしてしまい、IPythonを終了しなくてもアプリ内でカットアンドペーストできませんでした。たぶんdfをファイルcvsまたはexcelに書き込むことができます。 –

+0

まさに同じ問題( 'encode = 'utf-8''で)は、この問題の解決策があるかどうかを知りたいです! (不思議なことに、これは必ずしも起こるとは限りませんが、場合によってのみ) – Yona

答えて

0
df.to_clipboard(df.to_csv(encoding='cp1252')) 

指定されたエンコードを使用してcsvとしてエンコードし、クリップボードにスローします。

関連する問題