gpt4 book ai didi

python - 使用正则表达式并读取 .EGG 文件内的文件?

转载 作者:太空宇宙 更新时间:2023-11-03 19:49:53 26 4
gpt4 key购买 nike

newemail = 'test@gmail.com'

import zipfile
import re

egg = zipfile.ZipFile('C:\\Users\\myname\\Desktop\\TEST\\Tool\\scraper-1.11-py3.6.egg')
file = egg.open('scraping_tool/settings.py')

text = file.read().decode('utf8')
emailregex = re.compile(r'[A-Za-z0-9-.]+@[A-Za-z0-9-.]+')
newtext = emailregex.sub(newemail,text)
newtext = newtext.encode('utf8')

file.close()
egg.close()

egg = zipfile.ZipFile('C:\\Users\\myname\\Desktop\\TEST\\Tool\\scraper-1.11-py3.6.egg', 'w')
file = egg.open('scaping_tool/settings.py', 'w')
file.write(newtext)

file.close()
egg.close()

我已经开始编程一周了,所以如果我说的任何内容没有意义,请告诉我。我现在想要实现的目标是从 Egg​​ 文件中的 .py 文件中获取电子邮件。

在交互式 shell 中,我能够成功检索 txt = file.read(),但是一旦我开始获取匹配对象并涉及 regEX,我就会开始收到诸如“无法从字节对象获取字符串”之类的错误

尝试阅读有关错误的 stackoverflow 问题,但仍然太新,无法破译他们在谈论的内容,可能需要将其简化一点。我知道 zip 文件扰乱了正则表达式处理字符串的方式,但不知道如何修复它。

编辑:关于编码的额外问题

最佳答案

当您 .read() zip 文件中的一个条目时,您将得到 bytes 。没有自动检测 zip 条目是二进制文件还是文本文件的功能,您必须自己做出决定。

为了将字节转换为字符串,您必须 decode它们,这需要了解保存这些文件的文本编码。如果您不确定,请选择 UTF-8 (utf8) 和 Windows-1252 (cp1252) >) 是可以尝试的常见编码。当特殊/重音字符在结果中看起来正确时,您就会知道您选择了正确的编码:

txt = file.read().decode('utf8')
print(txt)

一旦您使用字符串,“无法从字节对象获取字符串”错误就不会再出现。

关于python - 使用正则表达式并读取 .EGG 文件内的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59907394/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com