Python处理微信小程序云数据库json文件
HDUZN

微信小程序的云数据库的数据是可以直接导出的,支持导出成JSON文件或者CSV文件。

json文件处理起来很方便,这里就直接导出成json文件了。

导出结果举例(data.json):

1
2
3
4
{"_id":"058dfefe629caed7075a6b8725c45ac1","_openid":"oaaaaaaaaL-7777777777","isbn":"9787530677216"}
{"_id":"b69f67c0629caee605fe79f43980a838","_openid":"oaaaaaaaaL-7777777777","isbn":"9787108064554"}
{"_id":"8f75309d629caf0c072a3f7a1f20df26","_openid":"oaaaaaaaaL-7777777777","isbn":"4781114262343"}
{"_id":"16db756f629caf3905ef16d24f5638f3","isbn":"9787508669762","_openid":"oaaaaaaaaL-7777777777"}

虽然导出来是.json文件,但这其实也不是标准的json格式的文件。如果是标准格式,应该是这样的:

1
2
3
4
[{"_id":"058dfefe629caed7075a6b8725c45ac1","_openid":"oaaaaaaaaL-7777777777","isbn":"9787530677216"},
{"_id":"b69f67c0629caee605fe79f43980a838","_openid":"oaaaaaaaaL-7777777777","isbn":"9787108064554"},
{"_id":"8f75309d629caf0c072a3f7a1f20df26","_openid":"oaaaaaaaaL-7777777777","isbn":"4781114262343"},
{"_id":"16db756f629caf3905ef16d24f5638f3","isbn":"9787508669762","_openid":"oaaaaaaaaL-7777777777"}]

如果是标准的json格式的文件,可以用json.load(fp)函数直接读取文件内容并转换为python的类型。

因为并不是标准的json格式的文件,所以就当成普通的文本文件就行。分两步:

  • 1.直接按普通文本文件读取内容;
  • 2.再对读取的数据进行格式处理。

1.读取json文件内容(非json标准格式)

1
2
3
4
5
6
7
8
9
10
# 读取 json文件内容(非json标准格式)
def read_non_standard_json(json_file):
data = []
with open(json_file, 'r', encoding='utf-8') as f:
for line in f:
data.append(line.strip('\n')) # 读取一行

f.close()

return data

返回的data是个List,每一行是一个字符串:

1
['{"_id":"058dfefe629caed7075a6b8725c45ac1","_openid":"oaaaaaaaaL-7777777777","isbn":"9787530677216"}', '{"_id":"b69f67c0629caee605fe79f43980a838","_openid":"oaaaaaaaaL-7777777777","isbn":"9787108064554"}', '{"_id":"8f75309d629caf0c072a3f7a1f20df26","_openid":"oaaaaaaaaL-7777777777","isbn":"4781114262343"}', '{"_id":"16db756f629caf3905ef16d24f5638f3","isbn":"9787508669762","_openid":"oaaaaaaaaL-7777777777"}']

2.数据格式化处理

  • 把data中每一项(json的字符串)反序列化为Python数据对象(dict字典)。
  • 然后把需要的项组成一个List。
1
2
3
4
5
6
7
8
9
10
11
def data_format(data):
data_list = []

for s in data:
one = json.loads(s, strict=False) # 把json格式的字符串转为python的dict对象
# print(type(one)) # <class 'dict'>
isbn = one['isbn']
openid = one['_openid']
data_list.append([openid, isbn])

return data_list

3.完整代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import json

# 读取 json文件内容(非json标准格式)
def read_non_standard_json(json_file):
data = []
with open(json_file, 'r', encoding='utf-8') as f:
for line in f:
data.append(line.strip('\n')) # 读取一行

f.close()

return data

def data_format(data):
data_list = []

for s in data:
one = json.loads(s, strict=False) # 把json格式的字符串转为python的dict对象
# print(type(one)) # <class 'dict'>
isbn = one['isbn']
openid = one['_openid']
data_list.append([openid, isbn])

return data_list

print('-'*10 + '读取json文件内容(非json标准格式)' + '-'*10)
json_file = r'.\data.json'
data = read_non_standard_json(json_file)
print(data)
print('-'*10 + '格式化' + '-'*10)
data_list = data_format(data)
print(data_list)

运行结果:

1
2
3
4
----------读取json文件内容(非json标准格式)----------
['{"_id":"058dfefe629caed7075a6b8725c45ac1","_openid":"oaaaaaaaaL-7777777777","isbn":"9787530677216"}', '{"_id":"b69f67c0629caee605fe79f43980a838","_openid":"oaaaaaaaaL-7777777777","isbn":"9787108064554"}', '{"_id":"8f75309d629caf0c072a3f7a1f20df26","_openid":"oaaaaaaaaL-7777777777","isbn":"4781114262343"}', '{"_id":"16db756f629caf3905ef16d24f5638f3","isbn":"9787508669762","_openid":"oaaaaaaaaL-7777777777"}']
----------格式化----------
[['oaaaaaaaaL-7777777777', '9787530677216'], ['oaaaaaaaaL-7777777777', '9787108064554'], ['oaaaaaaaaL-7777777777', '4781114262343'], ['oaaaaaaaaL-7777777777', '9787508669762']]
  • 本文标题:Python处理微信小程序云数据库json文件
  • 本文作者:HDUZN
  • 创建时间:2022-07-12 16:11:52
  • 本文链接:http://hduzn.cn/2022/07/12/Python处理微信小程序云数据库json文件/
  • 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
 评论