Files
jupyter/数据处理.ipynb
T
2021-11-16 21:40:07 +08:00

5.5 KiB

正则表达式分割文本

In [ ]:
import json
import openpyxl
import re

file_name = 'data/药食材性味归经.xlsx'
wb = openpyxl.load_workbook(file_name)
sheet = wb.active
#sheets = wb.sheetnames

list1 = []
dict1 = {}
mo =r'[。入归].+经$'
mo1 = r'[二]'
mo2 = r'[,、;]'
for n in range(2,sheet.max_row):
    name = sheet.cell(n,1).value
    content = re.findall(mo,sheet.cell(n,2).value)
    if len(content) > 0:
        l = len(content[0])
        gj = re.sub(mo1, '', content[0][1:l-1])        
        list_gj = re.split(mo2,gj)
        dict1[sheet.cell(n,1).value ] = list_gj
        #dict1['guijing'] = list_gj
        
filename = './data/药食材归经.json'
with open(filename,'w') as fl:
    json.dump(dict1, fl,ensure_ascii=False) 

#print(list1)

药膳归经明细文件生成

In [ ]:
import json

filename = 'data/药膳210927.json'
with open(filename,'r') as fl:
    dict1 = json.load(fl)
filename = 'data/药食材归经.json'
with open(filename,'r') as fl:
    dict2 = json.load(fl)
k_zy = dict2.keys()
dict3 = {}
list1 = []
for item in dict1:
    print(item['name'])
    list1 = []
    #print(i,item['zy'])
    for m_zy in item['zy']:
        if m_zy in k_zy:
            dict4 = {}
            print(m_zy,dict2[m_zy])
            dict4[m_zy] = dict2[m_zy]
            list1.append(dict4)
    dict3[item['name']] = list1
filename = './data/药膳药食材.json'
with open(filename,'w') as fl:
    json.dump(dict3, fl,ensure_ascii=False)             
   

药膳归经权重生成

In [60]:
import json
import openpyxl
import os,sys,shutil

filename = './data/药膳药食材.json'
with open(filename,'r') as fl:
    dict1 = json.load(fl)
list1 = []
for k, v in dict1.items():
    if len(v) > 0 :
        dict2 = {}
        #print(k,v)
        ys_name = k
        dict2.setdefault(ys_name,{})
        for item in v:
            for k1, v1 in item.items():
                for item1 in v1:
                    dict2[ys_name].setdefault(item1,0)
                    dict2[ys_name][item1] += 1
        list1.append(dict2)                    
    
dict_qz = {}
for item in list1:
    for k, v in item.items():
        qz = sorted(v.items(), key = lambda kv:(kv[1], kv[0]),reverse=True)
        dict_qz[k] = qz
#print(dict_qz)
qz_key = dict_qz.keys()
filename = 'data/药膳210927.json'
with open(filename,'r') as fl:
    dict1 = json.load(fl)
#print(dict1)
wb = openpyxl.Workbook()
sheet = wb.active
sheet['A1'] = '药膳名称'
sheet['B1'] = '来源'
sheet['C1'] = '配方'
sheet['D1'] = '做法'
sheet['E1'] = '功效'
sheet['F1'] = '中药成分'
sheet['G1'] = '归经权重'

i =2
for item in dict1:
    sheet[f'A{i}'] = item['name']
    sheet[f'B{i}'] = item['source']
    sheet[f'C{i}'] = item['pf']
    sheet[f'D{i}'] = item['zf']
    sheet[f'E{i}'] = item['gx']
    sheet[f'F{i}'] = ','.join(item['zy'])
    if item['name'] in qz_key:
        s = ''
        for m_gj in dict_qz[item['name']]:
            s = s+ m_gj[0] +'('+str(m_gj[1])+')'
        sheet[f'G{i}'] = s
    else:
        sheet[f'G{i}'] = '暂无归经'
    i += 1

wb.save('data/test4.xlsx')    

In [ ]: