PyperclipException: только значения str, int, float и bool могут быть скопированы в буфер обмена, но не в Unicode - PullRequest
0 голосов
/ 27 августа 2018

В настоящее время я прохожу автоматизацию скучных вещей с помощью видео курса Python и в основном копирую его показанный код и пытаюсь создать программу таким образом, мой код в настоящее время точно такой же, как в видео.

1-й, я укажу функцию предназначенной для 2-й программы, почему я думаю, что это может быть с ошибкой, указанной выше, и был бы признателен, если бы кто-то помог новичку решить эту проблему.

  1. Программа предназначена для того, чтобы взять PDF-документ, который мы скопировали в буфер обмена, документ содержит электронные письма и номера телефонов. Мы хотим, чтобы он извлек адрес электронной почты и телефон, а затем скопировал эту информацию в конце в буфер обмена.

  2. Чем отличается инструктор от меня, так это тем, что я использую другой документ для копирования и извлечения телефонных номеров, поскольку тот, который он использовал, больше не существует. Текущий вывод, если я печатаю скопированные телефонные номера, - это буква u, а затем предполагаемый номер телефона

Текущий вывод программы

 import re, pyperclip

    # Create a regex for phone numbers 
    phoneRegex = re.compile(r''' 
    (((\d\d\d)|(\(\d\d\d\)))?   # area code <optional>
    (\s|-)      # first seperator 
    \d\d\d      # first 3 digitis
    -           # seperator 
    \d\d\d\d    # last 4 digits 
    (((ext(\.)?\s)|x)   # extension word-part<optional>
    (\d{2,5}))?     # extension number-part<optional> 2,5 is to signify that it can be 2-5 digits
    )
    ''', re.VERBOSE)

    # TODO:: Create a regex object for email addresses 
    emailRegex = re.compile(r'''
    # we will make it search for emails that contain any numbers, letters plus or period symbols 

    [a-zA-Z0-9_.+]+     # name part
    @                   # @ symbol
    [a-zA-Z0-9_.+]+     # domain part

    ''', re.VERBOSE)

    # Get the text off the clipboard 
    text = pyperclip.paste()

    # Extract the email/phone from this text
    extractedPhone = phoneRegex.findall(text)
    extractedEmail = emailRegex.findall(text)

    allPhoneNumbers = []
    for phoneNumber in extractedPhone:
        allPhoneNumbers.append(phoneNumber[0])

    print(allPhoneNumbers)


    # TODO: Copy the extracted email/phone to the cliboard 
    results = '\n'.join(allPhoneNumbers) + '\n' + '\n'.join(extractedEmail)
    pyperclip.copy(results)

Ответы [ 3 ]

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

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

0 голосов
/ 11 мая 2019

Вы можете попытаться сделать список переменных allPhoneNumbers переменным в виде строковой переменной и вместо добавления просто объединить строку, , поскольку функция pyperclip.paste () или pyperclip.copy () ожидает строку в качестве аргумента. Здесь вы пытаетесь вставить список в функцию paste (), по этой причине, даже если я получаю ту же ошибку, тогда просто преобразуйте список в строку , тогда все будет работать отлично. И еще одна важная функция findAll () всегда возвращает кортеж, поэтому преобразуйте его также в строку перед объединением в результирующую строку.

0 голосов
/ 28 августа 2018

У меня была та же самая проблема , и я вижу, что это вероятно регрессия в Pyperclip.

Попробуйте установить более старую версию. Это сработало для меня.

python2 -m pip install 'pyperclip<1.6.2'

или просто

pip install 'pyperclip<1.6.2'

...