“如何逃离”’&引用&引用“&引用;当我在python中使用gzip.open()时
我对Python完全陌生,当我使用“如何逃离”’&引用&引用“&引用;当我在python中使用gzip.open()时,python,Python,我对Python完全陌生,当我使用gzip.open()来处理.gz文件时,我会得到一些代码,比如“它是一个非常好的集成强制转换,非常平衡” 我该怎么处理呢?我使用的代码是: def _review_reader(file_path): gz = gzip.open(file_path) for l in gz: yield eval(l) 该文件是从json文件压缩而来的 比如: 我想得到评论文本,但是有一些代码,比如’因为您正在查看JSON数据,所
gzip.open()
来处理.gz文件时,我会得到一些代码,比如“它是一个非常好的集成强制转换,非常平衡”
我该怎么处理呢?我使用的代码是:
def _review_reader(file_path):
gz = gzip.open(file_path)
for l in gz:
yield eval(l)
该文件是从json文件压缩而来的
比如:
我想得到评论文本,但是有一些代码,比如
’代码>因为您正在查看JSON数据,所以请使用Python的JSON解析器来加载它。它将自动处理任何嵌入的转义字符,例如\n
或\“
在读取gzip文件时,认识到gzip为您提供原始字节是很重要的。必须通过调用.decode()将这些字节显式调整为文本
,为了正确地执行此操作,您需要知道JSON使用了什么文本编码。UTF-8是一个非常安全的默认假设,但它可能是其他东西,这取决于.gz文件编写时选择的内容
解析JSON后,您可以通过名称访问属性:
import json
import gzip
def _review_reader(file_path, encoding="utf8"):
with gzip.open(file_path, "rb") as f:
json_text = f.read().decode(encoding)
return json.loads(json_text)
for review in _review_reader(file_path):
print(review['reviewText'])
如果reviewText
碰巧包含HTML代码而不是纯文本,则可能需要另一个步骤-HTML解析。可以帮助:
from lxml import etree
# ...
for review in _review_reader(file_path):
text = review['reviewText']
tree = etree.fromstring("<html>" + text + "</html>")
print(tree.text)
从lxml导入etree
# ...
对于_review_reader(文件路径)中的审阅:
text=review['reviewText']
tree=etree.fromstring(“+text+”)
打印(tree.text)
由于您正在查看JSON数据,请使用Python的JSON解析器加载它。它将自动处理任何嵌入的转义字符,例如\n
或\“
在读取gzip文件时,认识到gzip为您提供原始字节是很重要的。必须通过调用.decode()
,将这些字节显式调整为文本,为了正确地执行此操作,您需要知道JSON使用了什么文本编码。UTF-8是一个非常安全的默认假设,但它可能是其他的,这取决于在编写.gz文件时选择了什么
解析JSON后,您可以通过名称访问属性:
import json
import gzip
def _review_reader(file_path, encoding="utf8"):
with gzip.open(file_path, "rb") as f:
json_text = f.read().decode(encoding)
return json.loads(json_text)
for review in _review_reader(file_path):
print(review['reviewText'])
如果reviewText
碰巧包含HTML代码而不是纯文本,则可能需要另一个步骤-HTML解析。这有助于:
from lxml import etree
# ...
for review in _review_reader(file_path):
text = review['reviewText']
tree = etree.fromstring("<html>" + text + "</html>")
print(tree.text)
从lxml导入etree
# ...
对于_review_reader(文件路径)中的审阅:
text=review['reviewText']
tree=etree.fromstring(“+text+”)
打印(tree.text)
eval(l)
用于什么?您应该非常小心地使用这个函数,在这种情况下,它几乎肯定是错误的。使用yield l
,或者更好的是,将整个for
循环替换为yield from gz
。也就是说,该文件包含HTML。为了解释这一点,您需要使用HTML解析器。显示更多(解压!)输入文件,并解释给定示例的最终结果。emmm。。我正在尝试更新这个问题。如果您使用gunzip
创建输入文件的未压缩版本,然后使用gz=open(gunzipped\u file\u path)
,那么为什么这是一个关于gzip.open()
的问题呢?构建a的一部分是使其最小化——找到重现问题所需的最小环境集代码>或’代码>。既然是JSON,就使用JSON解析器(请参阅)。eval(l)
的作用是什么?您应该非常小心地使用这个函数,在这种情况下,它几乎肯定是错误的。使用yield l
,或者更好的是,将整个for
循环替换为yield from gz
。也就是说,该文件包含HTML。为了解释这一点,您需要使用HTML解析器。显示更多(解压!)输入文件,并解释给定示例的最终结果。emmm。。我正在尝试更新这个问题。如果您使用gunzip
创建输入文件的未压缩版本,然后使用gz=open(gunzipped\u file\u path)
,那么为什么这是一个关于gzip.open()
的问题呢?构建a的一部分是使其最小化——找到重现问题所需的最小环境集代码>或’代码>。由于它是JSON,请使用JSON解析器(请参阅)。