Python Pandas to_clipboard()函数出现UnicodeEncodeError:'ascii'编解码器无法编码字符。

7

我想将数据框中的数据复制到剪贴板,以便粘贴到Excel中。问题在于,字符'\xe9'会导致编码问题,如下所示:

>>> 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)

我解码了这个字符,它是一个重音符号é

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

阅读to_clipboard()文档后,我注意到它说:其他关键字参数被传递给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)?

我重现了这个问题,但无法解决它,这搞乱了我的剪贴板,所以不能在关闭IPython之前在任何应用程序中剪切和粘贴。也许您只需将df写入文件,cvs或excel即可。 - user4322779
我遇到了完全相同的问题(使用 encode='utf-8'),很想知道是否有解决这个问题的方法!(奇怪的是,这种情况并不总是发生,只在某些情况下出现) - Yona
1个回答

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

只需按规定的编码将其编码为csv格式,然后将其放到剪贴板上。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接