Python将Json字符串值转换为int float boolean

2024-06-17 18:05:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我来自javascript背景。我试图解析一个json。 json.loads应该将stringfied值转换为它们的相关类型。在

如何使用python3实现这一点?目的是评估所有具有相关类型的值。在

场景: 我正在用python阅读csv 读取csv时,值将转换为字符串 我删除了csv代码,因为它不相关!!!在

代码:

import json
x = '{ "name":"John", "age":30, "dev":"true", "trig":"1.0E-10", "res":"0.1"}'
y = json.loads(x)
print(y)

电流输出:

^{pr2}$

预期输出:

{
  "name": "John",
  "age": 30,       // int 
  "dev": true,     //  bool
  "trig": 1.0E-10, // real number
  "res": 0.1       // float
}

Tags: csv代码namedevjsontrue类型age
2条回答

您的基本问题是json数据包含字符串,而不是值(例如,"dev":"true"而不是{})。在javascript中解析字符串会遇到与Python中相同的问题:

(dev) go|c:\srv\tmp> node
> x = '{ "name":"John", "age":30, "dev":"true", "trig":"1.0E-10", "res":"0.1"}'
'{ "name":"John", "age":30, "dev":"true", "trig":"1.0E-10", "res":"0.1"}'
> JSON.parse(x)
{ name: 'John', age: 30, dev: 'true', trig: '1.0E-10', res: '0.1' }
> JSON.parse(x).dev
'true'
> typeof JSON.parse(x).dev
'string'

这里真正的解决方案是修复任何正在创建这种格式错误的json。在

您可以在Python中绕过它,例如:

^{pr2}$

会打印出来的

{u'trig': 1e-10, u'res': 0.1, u'age': 30, u'name': u'John', u'dev': True}

首先,需要从文件加载json

file = open('data.json', 'r')
content = file.read()
file.close()

然后我们可以检查每个值,并检查是否可以将其转换为int或{},或者是{}或{},如果是这样,我们更新字典的特定值。在

^{pr2}$

输出:

age 30 // <class 'int'>
dev True // <class 'bool'>
name John // <class 'str'>
res 0.1 // <class 'float'>
trig 1e-10 // <class 'float'>

相关问题 更多 >