Python:读取json文件并且格式化的方法

在工作用,有时候需要用到读取json格式的情况

如下:

1 @用户帐号密码和关系
2 {"username":"12345678901","psw":'123456aaa',"classids":["211088c7c75dbc74e2e64f3c77f63642", "0278832f003754076d6f218f7d7353dc"]}
3 {"username":"12345678902","psw":'123456ss' ,"classids":["e099806922c132feadb3e31a41ee88cb"] }

 

 1 def readJson(path):   #传入参数
 2     with open(path,encoding='utf-8') as handler:
 3         lines = handler.readlines()     #打开逐行读取文件
 4 
 5     filterLines = []    #存储读取出来数据用的
 6     for line in lines:
 7         line = line.strip()    #strip()默认删除空白符(包括'\n', '\r',  '\t',  ' ')
 8         if line.find('@') == 0:   #跳过@开头的行
 9             continue
10         if line.find('@') == -1:
11             filterLines.append(line)
12         else:
13             filterLines.append(line[:line.find('@')].strip())
14     return filterLines

在读取的时候,发现读取出来的内容

['{"username":"12345678901","psw":\'123456aaa\',"classids":["211088c7c75dbc74e2e64f3c77f63642", "0278832f003754076d6f218f7d7353dc"]}', '{"username":"12345678902","psw":\'123456ss\' ,"classids":["e099806922c132feadb3e31a41ee88cb"] }']

 

拿出来的是 一个是list 里面包含了若干 string

 

 

 

 

 对此 我们需要做一个转换,把列表里面的 单引号去掉

b=eval(a[0])
#

 

 通过以上的操作:

我们可以实现数据的转换

 

 

 

引用资料:

功能:将字符串str当成有效的表达式来求值并返回计算结果。
  语法: eval(source[, globals[, locals]]) -> value
  参数:
    source:一个Python表达式或函数compile()返回的代码对象
    globals:可选。必须是dictionary
    locals:可选。任意map对象

在网上看到一些例子:

x = 10
y = 20 
a = eval('x + y') 
print('a: ', a) a=30
我们可以看到,其实eval()这个函数,首先是会先吧str里面的内容,进行啊一个实例化,抽取出来成为一个对象。
{ str}'x + y' 变成 x + y,
自然
"[[1,2], [3,4], [5,6], [7,8], [9,0]]"
便可以 抽取成为{list}[[1,2], [3,4], [5,6], [7,8], [9,0]]

 

posted @ 2021-07-23 11:12  快乐开心的大虾  阅读(749)  评论(0)    收藏  举报