Python Pyperclip не может скопировать декодированный - PullRequest
0 голосов
/ 06 сентября 2018

Я только что узнал, что по какой-то причине при копировании с помощью pyperclip строки, которая была декодирована (с использованием utf-8), это вызовет ошибку.

import pyperclip
with open('chat.txt' 'r') as f:
    string = f.read()
# the string is encoded in utf-8 in order to be able to write down `'`, `emoji` and other special signs or symbol
pyperclip.copy(string.decode('utf-8'))

Это вызовет эту ошибку: PyperclipException: only str, int, float, and bool values can be copied to the clipboard, not unicode

Я нашел обходной способ решения проблемы с помощью str(), но потом обнаружил, что он не будет работать, поскольку str() не работает, если есть какой-то символ, такой как '.


РЕДАКТИРОВАТЬ: Альтернативное решение

Альтернативное решение, кроме принятого мною решения, - понизить pyperclip с самой новой версии (сейчас ее 1.6.4) до более низкой версии (1.6.1 работало для меня).

Ответы [ 2 ]

0 голосов
/ 24 сентября 2018

Эта проблема была исправлена ​​в 1.6.5, поэтому все, что вам нужно сделать, это обновить pyperclip, запустив pip install -U pyperclip.

0 голосов
/ 06 сентября 2018

Вы, похоже, столкнулись с некоторыми проблемами в кавычках, отличных от ASCII. Я предлагаю вам использовать Python 3.7. Вот образец:

import pyperclip

with open('chat.txt', 'r') as f:
    string = f.read()
pyperclip.copy(string)

Это альтернатива для Python 2.7:

import pyperclip
import sys
reload(sys)
sys.setdefaultencoding('utf8')

with open('chat.txt', 'r') as f:
    string = f.read()

pyperclip.copy(string)

Предупреждение: Как указано в комментарии @lenz, использование sys.setdefaultencoding() является взломом и не рекомендуется по ряду причин .

...