Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python PyperclipException:只有str、int、float和bool值可以复制到剪贴板,而不是unicode_Python_Regex_Python 3.x_Pyperclip - Fatal编程技术网

Python PyperclipException:只有str、int、float和bool值可以复制到剪贴板,而不是unicode

Python PyperclipException:只有str、int、float和bool值可以复制到剪贴板,而不是unicode,python,regex,python-3.x,pyperclip,Python,Regex,Python 3.x,Pyperclip,目前,我正在学习python视频课程,基本上是复制他展示的代码,并试图以这种方式创建程序,我的代码目前与视频中的代码完全相同 首先,我将说明计划的功能,其次,为什么我认为可能存在上述错误,并感谢有人帮助noob解决此问题 该计划的目的是采取一个pdf文件,我们已经复制到剪贴板,该文件包含电子邮件和电话号码。我们希望它能够提取电子邮件和电话,然后将最后的信息复制到剪贴板上 讲师和我的不同之处在于,我使用不同的文档来复制和提取电话号码,因为他使用的电话号码已经不存在了。如果我打印复制的电话号码,则当

目前,我正在学习python视频课程,基本上是复制他展示的代码,并试图以这种方式创建程序,我的代码目前与视频中的代码完全相同

首先,我将说明计划的功能,其次,为什么我认为可能存在上述错误,并感谢有人帮助noob解决此问题

  • 该计划的目的是采取一个pdf文件,我们已经复制到剪贴板,该文件包含电子邮件和电话号码。我们希望它能够提取电子邮件和电话,然后将最后的信息复制到剪贴板上

  • 讲师和我的不同之处在于,我使用不同的文档来复制和提取电话号码,因为他使用的电话号码已经不存在了。如果我打印复制的电话号码,则当前输出是字母u,而不是预期的电话号码

  • import re,pyperclip
    #为电话号码创建正则表达式
    phoneRegex=re.compile(r''
    ((\d\d\d)|(\(\d\d\d\))?#区号
    (\s |-)#第一分离器
    \d\d\d#前3位
    -#分离器
    \d\d\d\d#最后4位数字
    (((\)?\s)| x)#分词部分
    (\d{2,5}))?#分机号第2,5部分表示它可以是2-5位数字
    )
    '',重复冗长)
    #TODO::为电子邮件地址创建正则表达式对象
    emailRegex=re.compile(r''
    #我们将搜索包含任何数字、字母加上或句号的电子邮件
    [a-zA-Z0-9.+]+#零件名称
    @#@符号
    [a-zA-Z0-9.+]+#域部分
    '',重复冗长)
    #从剪贴板中取出文本
    text=pyperclip.paste()
    #从此文本中提取电子邮件/电话
    extractedPhone=phoneRegex.findall(文本)
    extractedEmail=emailRegex.findall(文本)
    AllPhoneNumber=[]
    对于extractedPhone中的phoneNumber:
    AllPhoneNumber.append(phoneNumber[0])
    打印(所有电话号码)
    #TODO:将提取的电子邮件/电话复制到剪贴板
    结果='\n'.加入(所有电话号码)+'\n'+'\n'.加入(提取邮件)
    pyperclip.copy(结果)
    
    我也有同样的想法,我认为这可能是pyperclip的回归

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


    python2-mpip安装'pyperclip此问题已在pyperclip 1.6.5中修复。您只需要通过运行
    pip install-U pyperclip

    进行升级,您可以尝试将allPhoneNumbers列表变量设置为字符串变量,而不是附加它,只是连接字符串,,因为pyperclip.paste()或pyperclip.copy()函数需要字符串作为参数。 在这里,您试图将一个列表插入到paste()函数中,这就是为什么即使我也会遇到相同的错误,然后只需将列表转换为字符串即可完美工作。 还有一件更重要的事,findAll()函数总是返回一个元组,所以在连接到结果字符串之前也要在字符串中转换它

     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)