使用pd.read_json加载亚马逊评论JSON至pandas DataFrame遇解码错误
解决pd.read_json()加载亚马逊评论JSON时的引号解码错误
嘿,这个问题我之前帮不少开发者排查过!你碰到的Unmatched ''"' when decoding 'string'错误,主要是两个原因叠加导致的:一是亚马逊评论的JSON文件几乎都是JSON Lines格式(每行一条独立的JSON对象,不是用[]包裹的标准JSON数组),二是部分行里的引号可能没正确转义。
下面给你两个实用的解决方案:
方案1:直接用pandas的lines参数(优先尝试)
亚马逊评论数据集默认是每行一个JSON对象,而pd.read_json()默认会按标准JSON数组解析,所以加上lines=True就能让pandas正确识别这种格式,同时指定编码避免乱码问题:
import pandas as pd # 替换成你的文件路径 df = pd.read_json('amazon_reviews.json', lines=True, encoding='utf-8')
如果还是报引号错误,可能是个别行的转义不规范,试试方案2。
方案2:逐行解析并跳过错误行
这个方法能帮你定位到具体出错的行,避免因为个别坏数据导致整个文件加载失败:
import json import pandas as pd review_data = [] with open('amazon_reviews.json', 'r', encoding='utf-8') as f: for line_number, line in enumerate(f, start=1): try: # 解析每行的JSON对象 review_obj = json.loads(line.strip()) review_data.append(review_obj) except json.JSONDecodeError as err: # 打印出错行号和错误信息,方便后续排查修正 print(f"第{line_number}行解析失败: {err}") continue # 把解析成功的数据转成DataFrame df = pd.DataFrame(review_data)
补充说明
你提供的示例数据里,reviewerName字段的\"Acknud\"是正确的转义格式,但如果文件里存在未转义的双引号(比如直接写"William B. Bebout "Acknud""),就会触发解码错误。逐行解析的方式能帮你快速定位这些问题行,你可以选择跳过或者手动修正它们。
内容的提问来源于stack exchange,提问作者abhi
相关产品推荐
相关产品推荐

