PyperclipException:只能将str,int,float和bool值复制到剪贴板,而不能将其复制到剪贴板

时间:2018-08-27 18:29:15

标签: python regex python-3.x pyperclip

目前,我正在通过python视频课程自动完成无聊的工作,基本上是在复制他显示的代码并尝试以这种方式创建程序,目前我的代码与视频中的代码完全相同。

第一,我将说明该程序的功能,而不是第二,为什么我认为它可能存在上述错误,并感谢有人帮助菜鸟解决了这个问题。

  1. 该程序用于获取我们已复制到剪贴板的pdf文档,该文档包含电子邮件和电话号码。我们希望它提取电子邮件和电话,而不是最后将该信息复制到剪贴板。

  2. 讲师和我之间的区别是我正在使用另一份文档来复制和提取电话号码,因为他不再使用该号码。如果我打印复制的电话号码,则当前输出为字母u,而不是预期的电话号码

Current program output

 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 :(得分:0)

我只是拥有相同的issue,我发现它可能是pyperclip的回归。

尝试安装旧版本。 这对我有用。

cbind(which(relist(TRUE, mat), arr.ind = TRUE), value = as.vector(mat)) # row col value # [1,] 1 1 1 # [2,] 2 1 2 # [3,] 3 1 3 # [4,] 4 1 4 # [5,] 5 1 5 # [6,] 1 2 6 # [7,] 2 2 7 # [8,] 3 2 8 # [9,] 4 2 9 #[10,] 5 2 10

或者简单地

python2 -m pip install 'pyperclip<1.6.2'

答案 1 :(得分:0)

此问题已在Pyperclip 1.6.5中修复。您只需要通过运行pip install -U pyperclip

进行升级

答案 2 :(得分:0)

您可以尝试将allPhoneNumbers列表变量设置为字符串变量,而不是仅附加字符串而不会附加它,因为pyperclip.paste()或pyperclip.copy()函数期望使用字符串作为参数。 在这里,您尝试将列表插入paste()函数,这是即使我遇到相同错误的原因,然后 只需将列表转换为字符串 ,即可正常运行。 更重要的一点是,findAll()函数始终返回一个元组,因此在连接到结果字符串之前,还要将其转换为字符串。