前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一个诞生于和盆友聊天时的Python 数据转换需求

一个诞生于和盆友聊天时的Python 数据转换需求

作者头像
Wu_Candy
发布2022-07-04 17:48:33
2340
发布2022-07-04 17:48:33
举报
文章被收录于专栏:无量测试之道

开始今天的分享之前,请先允许我介绍下以下文章内容的由来。

------1 个来自盆友提的小需求

2020-08-20 09:55:59,好盆友给我发了条微信,内容如下:

通过和盆友的微信交流,我get到了她的想法,知道了她最终想要的数据格式。于是就有了今天的分享内容。

我分4 步去实现了这个来自盆友的小需求~

1

格式化数据

去掉多余行、空格、换行符

代码语言:javascript
复制
import json
origin_result_data = [b'*************************** 1. row ***************************\n', 
                      b'id: 1\n', 
                      b' param_name: enterprise\n', 
                      b'param_value: {"name": "", "abbreviation": "", "description": " EditByHS form APIs", "logo_path": ""}\n', 
                      b'description:  \n', 
                      b'      level: 1\n', 
                      b'update_time: 1970-01-01 00:00:00.000000\n', 
                      b'  parent_id: NULL\n', 
                      b'*************************** 2. row ***************************\n', 
                      b'         id: 2\n', 
                      b' param_name: init_password\n', 
                      b'param_value: 0\n', 
                      b'description:   \n', 
                      b'      level: 1\n', 
                      b'update_time: 0000-00-00 00:00:00.000000\n', 
                      b'  parent_id: NULL\n', 
                      b'*************************** 3. row ***************************\n', 
                      b'         id: 3\n', 
                      b' param_name: clear_log_info\n', 
                      b'param_value: {"set_time": "2020-08-14", "clear_interval": 0}\n', 
                      b'description:  \n', 
                      b'      level: 1\n', 
                      b'update_time: 0000-00-00 00:00:00.000000\n', 
                      b'  parent_id: NULL\n']
#去除\n、空格字符
s = [x.strip() for x in origin_result_data if x.strip() != '']
for i in s:
    if "****" in str(i):
        #去除字符串中包含***的字符串,即删除掉每一条数据的第一行
        s.remove(i)

2

大列表分割成小列表

将大列表有序分割成小列表

代码语言:javascript
复制
def list_of_groups(list_info, per_list_len):
    """
    :param list_info:   列表
    :param per_list_len:  每个小列表的长度
    :return:
    """
    list_of_group = zip(*(iter(list_info),) * per_list_len)
    end_list = [list(i) for i in list_of_group] # i is a tuple
    count = len(list_info) % per_list_len
    end_list.append(list_info[-count:]) if count !=0 else end_list
    return end_list


def test_ret():
    list_info = s
    #将大列表中每7个元素组成一个小列表
    ret = list_of_groups(list_info, 7)
    return ret

3

列表与字典层层嵌套

大列表中嵌套字典,字典中再次嵌套字典

代码语言:javascript
复制
target_result_data = []
for item in test_ret():
    data = {}
    data['id'] = str(item[0]).split(": ")[1].split("'")[0]
    data['param_name'] = str(item[1]).split(': ')[1].split("'")[0]
    if str(item[2]).split(": ")[1].split("'")[0] == '0':
        data['param_value'] = 0
    else:
        data['param_value'] = "{" + str(item[2]).split(": {")[1].split("'")[0]
        data['param_value'] = json.loads(data['param_value'])
    data['description'] = str(item[3]).split(':')[1].split("'")[0]
    data['level'] = str(item[4]).split(': ')[1].split("'")[0]
    data['update_time'] = str(item[5]).split(': ')[1].split("'")[0]
    data['parent_id'] = str(item[6]).split(': ')[1].split("'")[0]
    target_result_data.append(data)
print(target_result_data)

4

满足需求结果输出

输出盆友想要的数据格式结果

代码语言:javascript
复制
target_result_data = [
    {'id': '1',
     'param_name': 'enterprise',
     'param_value': {'name': '', 'abbreviation': '', 'description': ' EditByHS form APIs', 'logo_path': ''},
     'description': '',
     'level': '1',
     'update_time': '1970-01-01 00:00:00.000000',
     'parent_id': 'NULL'
     },

    {'id': '2',
     'param_name': 'init_password',
     'param_value': 0,
     'description': '',
     'level': '1',
     'update_time': '0000-00-00 00:00:00.000000',
     'parent_id': 'NULL'
     },

    {'id': '3',
     'param_name': 'clear_log_info',
     'param_value': {'set_time': '2020-08-14', 'clear_interval': 0},
     'description': '',
     'level': '1',
     'update_time': '0000-00-00 00:00:00.000000',
     'parent_id': 'NULL'
     }
]

结语: 在工作或学习过程中你是否也遇到过类似的关于Python 数据格式转换的问题呢?你又是如何解决的呢? 友情提示:“无量测试之道”原创著作,欢迎关注交流,禁止第三方不显示文章来源时转载。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-09-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 无量测试之道 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档