0

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

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

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

3 回答 3

1

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

于 2019-05-11T14:07:43.983 回答
0

我刚刚遇到了同样的问题,我认为这可能是 pyperclip 中的回归。

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

python2 -m pip install 'pyperclip<1.6.2'

或者干脆

pip install 'pyperclip<1.6.2'

于 2018-08-28T05:18:27.207 回答
0

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

于 2018-09-24T07:53:38.923 回答