【问题标题】:garbage value in JSON file while storing the output存储输出时 JSON 文件中的垃圾值
【发布时间】:2021-10-07 03:19:14
【问题描述】:

当我在网上抓取网站并存储输出时,我观察到我的数字数据正在被某种乱码数据所取代。我不知道该怎么办。

json.dumps(lst)
with open('data.json', 'w') as f:
json.dump(lst , f,indent=4)

这就是我存储数据的方式

[
{
    "product_title": "Skybags Brat Black 46 Cms Casual Backpack",
    "MRP": "\u20b92,010.00",
    "Discounted_price": "\u20b9969.00"
},
[

这就是我数据的样子

更新:

json.dumps(lst, ensure_ascii=False) 添加到我的代码后遇到此错误

【问题讨论】:

  • 不是专家,但这看起来像字符编码
  • 是的,我想有什么解决办法吗?
  • 一个快速的解决方法是在写入 json 文件之前去除 unicode 字符,即json.dumps(lst, ensure_ascii=False).encode('ascii', 'ignore')
  • nicodeEncodeError: 'charmap' codec can't encode character '\u20b9' in position 1: character maps to 在将上述代码应用于我的脚本后遇到此错误

标签: python json web-scraping utf-8


【解决方案1】:

这不是胡言乱语。它是一个 Unicode 字符。你可以在json.dumps()中使用ensure_ascii=False

import json
l = [
{
    "product_title": "Skybags Brat Black 46 Cms Casual Backpack",
    "MRP": "\u20b92,010.00",
    "Discounted_price": "\u20b9969.00"
    }
]

x = json.loads(json.dumps(l, ensure_ascii=False))
print(x)
[
{
'product_title': 'Skybags Brat Black 46 Cms Casual Backpack',
 'MRP': '₹2,010.00', 
'Discounted_price': '₹969.00'
}
]

将数据按原样写入文件。使用这个

with open('data.json', 'w', encoding='utf-8') as f:
    json.dump(lst , f,indent=4,ensure_ascii=False)

【讨论】:

  • 我再次重复同样的事情 n 首先我正在写入文件而不是读取它并且仍然面临问题 nicodeEncodeError: 'charmap' codec can't encode character '\u20b9 ' 在位置 1:字符映射到
  • 您没有在open() 中使用encoding='utf-8'。请检查。
【解决方案2】:

因为 json.dump 总是读取为 ensure ascii 你可以把json.dump(lst , f,indent=4)改成json.dump(lst , f,indent=4, ensure_ascii=False)

【讨论】:

    最近更新 更多