数据库
首页 > 数据库> > Python: 把json字符串中,驼峰式命名的变量名,转换成数据库字段命名的常用方式(大写)

Python: 把json字符串中,驼峰式命名的变量名,转换成数据库字段命名的常用方式(大写)

作者:互联网

背景

要求调用外部提供的接口,接收一堆json字符串,再按照这个字符串,创建数据表,再解析这个json字符串,创建javabean,写insert sql,把数据一条条插入数据表中。

由于字段名多达几十个,所以决定用python来解析字符串,直接输出一些重复性代码。

1.数据库字段

json字符串:

转换后的数据库字段名(喜欢小写的可以全部转成小写):

代码:

# json字符串转换为数据库里的字母大写+下划线命名
def readTxt():
    file = 'resource/JsonString.txt'
    # w模式表示:如果没有这个文件,创造一个文件。每次运行都覆盖之前的内容。
    # 如果想要追加,而不是覆盖,请使用a+模式。
    wirteFile = open('resource/jsonName.txt','w',encoding='utf-8')
    with open(file, 'r',encoding='utf-8') as f:
        # 读取到每一行的内容
        data = f.readlines()
        count = 0;
        for eachLine in data :
            wirteFile.write("-----------------分割线------------\n")
            str_ = eachLine
            # 去掉首尾的{}
            str_ = str_[1:len(str_)-1]
            if count < len(data):
                # 只要不是最后一行 都会有个换行符 所以在去掉一个字符
                str_ = str_[0:len(str_) - 1]
            count = count +1
            strArray = str_.split(",")
            for eachKeyValue in strArray:
                keyStr = eachKeyValue.split(":")[0]
                valueStr = eachKeyValue.split(":")[1]
                key = keyStr.replace('"',"")
                value = valueStr.replace('"', "")
                newKey = ""
                num = 0
                for i in key:
                    # 首字母转大写
                    if num == 0:
                        newKey = i.upper()
                    elif num>0:
                        # 遇到大写 加个下划线
                         if i.isupper():
                             newKey = newKey+"_"+i
                        # 顺便把其他的英文字符也大写
                         elif i.islower():
                             newKey = newKey + i.upper()
                        # 数字、特殊字符使用原装
                         else:
                             newKey = newKey+i
                    num = num+1
                wirteFile.write(newKey+":"+value+"\n")
readTxt()

也可以拼接字符串直接写建表的sql。

表建好了,其他的java bean啊sql可以用mybatis 逆向工程自动生成哦,也可以再写个python程序处理。

标签:newKey,Python,大写,字符串,json,num,str,命名
来源: https://www.cnblogs.com/northwest332/p/15823643.html