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