Python快速导入id至json文件(2024.3.19)

需求分析

        由于 json 文件存放键值对类型的对象,其中可以有数组、整数、字符串,值得注意的是一些物体或对象的编码(也称唯一ID,由多个阿拉伯数字组成)往往数值位数较长,如果直接存储到数组当中后利用其他语言再次读取不可避免地会存在因整型数据存储范围有限而导致的”数据丢失“”问题,而存储为字符串的话,尽管JavaScript可用单引号/双引号将编码内容括起来,但json文件则要采用双引号来表达字符串类型的存储数据
        假设输入一个记事本文件(.txt)或一个表格文件(.xlsx),记事本文件中包含多个编码,每行存储一个编码;表格文件中存在多个Sheet,每个Sheet中仅包含一列内容,此列中的每行代表一个编码值,各个Sheet对应自己的名称,如Sheet1、Sheet2、Sheet3的名称依次为摄像头、电脑、显示器,现在要做的是尽快将这些数据读取出来保存至json文件当中而后json文件可作为其他用途/功能的输入项

1、输入数据介绍

1.1 三个.txt文件

        三个文本文件分别为computers.txt、cameras.txt、monitors.txt

1.1.1 computers.txt(计算机)

061670250201186039640221856168894474,
091883725624379634059401891225464892,
354006320252067614974577379838317068,
606762219047053307613072424851376507,
455569803929941736688488873930414625,
877124960448116979580036263362115040,
493456053704245461244044201305086896,
431601660536792036001704076493601346,
792409384536334249099881846847937909,
954087620660464126863180014061122905,
977177795462237827424730448161900727,
957829339434837191509799559641037058,
117656618259356365257151977948767081,
198001461601914045001461337025551018,
386208556341769271268436683942950615,
333609531350318271465079766638457295,
745931988374477028943853769930137250,
743327797797900276558402019789838780,
167311318246562075781430632920129472,
590724357522698409824752010622427676,
748798844808702809250065139689142136,
276051514288252557938322428150794267,
119445735431462818182811256762907444,
411148322596976529338575273217543948,
971408018014426973047343494174139258,
186783908933277687449927537240950139,
478915865623068446121657665666805366,
155971603918639429644330949278746573,
595813854766431291912075723167740319,
124831561353060248991712626076699246,
862678230951016057860356966667303070,
184876090492013026502683243695989530,
201066724015671392870427343979748172,
774260647705608047399953423277127945,
452561641444976735000416114480347759,
611160069092372177493801861290535131,
101689763541532647811625638694710245,
535854655154623125613205229915438234,
644151695143994772041297752567767470,
395071889513791005715666804077387411,
827752556288378725006852014256093402,
341186541266276251795308700688995679,
948331282546383978126253369047622212,
004895912713938420536802343509476902,
657435117142871482793091099809746128,
832592028498971807600109957559329521,
458201546278050872532295753080635635,
356488821440354035025686524963107056,
465896722520697709054479056035304326,
499546652560330853645037764173316340,
245394745169800496963081931513156065,
091347794937872093073278268904312785,
914020316146808563394022152451045615,
858300839330083006901418213505889278,
230530832312020508576228245386555847,
047484048522741056232373242680989879,
460514055677195131461076150267598671,
515097531757784715675231340973779535,
924036948135319827998490262834148828,
487731742310544045753920272927377484,
001384736083001119630250264772309665,
515500485091423618108048804451592724,
766440251731168550384888686198068573,
465350124638886089162660938224614135,
081740808138866099734647112220686745,
410300835250286700677335808402055254,
091833407922137170538248509478372617,
930526783789779087711627617893880047,
809237457982280051249141097605484875,
201084921054187386234124726976724875,
785019903516333867507610953285518399,
409312106371171601136007702579409682,
192174314610528924894214512406586316,
565027084749187079407285118651843803,
446098914070374553679525673348145389,
875101585103758195652011423844066569,
449389435113722547559841236700814830,
559565559025024444182615652234714416,
235068638817428621289609920579813264,

1.1.2 cameras.txt(摄像头)

677499672088410791181697195584169914919095926363,
378830074229770474044744054615150402410846484514,
670200144653833406877847724920116042407563873479,
544719628819037466100555157361263777154927090466,
762714559549921662579546266576196761588458288257,
418313939902225028535379380187831273403834100212,
160410017100897462332835502636531392807023623794,
219684189993850376045013798732047818967548374750,
929375017477840854944048046802855250843137767672,
212854417253598340607475568368470786051385378273,
636698519826744290651091576906883361566623159251,
146488106576423080793952322817030233729501450596,
491794981257824733194800347738792225143811965071,
931598537525583432582708086623858895797438355195,
141168818297667662864949089520279892078569039211,
807272607423871886883843547199925412527925251954,
999122062280010417701461771773362109390400442885,
270645836725269035745909105539739656725145896395,
016200166899214471963023871855009091142313976466,
884290079731714437132852023611231833358539194103,
012387541982295048508098589032113158132082681802,
904100730436540626518222550844732082670891989036,
651700906708936702270197003958780117426108708799,

1.1.3 monitors.txt(显示器)

3316573526937559564001655189137511075999,
0520328861325233475762213797836168364676,
2256119318403411059253787289281980910690,
2668962290087374612596414063917005773503,
0744508502818923850600591521645446970262,
1808455549173588707679063376840046354852,
1131052258916869443303641548246199365394,
8704666131557881884493343567545389801327,
0970012595430430268120919892740440027633,
1449896050234509116687828617414989479475,
0747893833135671929072787465708872910161,
9522172130118667996902861000941282114761,
7335810744498283589636608306710151662854,
6539645455649047264081743546533729075982,
4603350656413913107683173827100053776250,
6842942087461591071986475365281508808748,
9398830379020946816592570418665317865529,
0282657048807797559970013218501801279976,
1386214095292531408908773437885991952264,
9155820538738090328344207363450485928709,
0108543309138432210513933537135683694442,
8795637447895043152730290538174191433535,
6354795153988558781278626286371067179896,
4703777963967141172644341575911514198995,
2891929363041819000924389306280111850013,
5606693972361748860725711413464340884305,
4304550198327850667650034938488080174554,
0869575114074007287133793428230182593187,
5541674048462339540742982673780171028187,
3481139929498078504487086758758924645668,
2858300478249271868088829314390539113621,
5654453381801666851608331833055152411845,
2282209734751580558276570900302917609586,
8195816169499695825309581678281823269308,
2353253681946447435219008663871493705367,
5564464560631884736783644855133945466137,
4808360868623690154588968595617358782371,
3766066017335843275121570442922641447877,
9728709064574682566602376899173367752213,
7188896332011163271991777242582894765762,
4267551060141692480259904786719404175228,
7916560920628548904208705023708030460016,
6276946457735636391400600523673219834285,
9791071513460715163309403786461360283083,
7930163632804897344985967643083432116236,
8759086994835886126079927807313295617282,
2918735500765741198771534920199753323181,
6556407451650529096093214361307071242886,
0994676282643512907362490999391963708299,
2726526950310720422628680940904703534494,
4780713264908146702030922053304570348319,
1744103935846572406368438900467847397467,
3158600569711804792560622511414352928508,
9729786065310366052273632106833376042827,
2163757052507128308771231978670952490239,
7962836538191027708649405127666897456641,
1617706623500804136618808275350572644045,
1891092262089434199501276646950197408839,
5365068785073976880939739772813615272277,
3821760432491140555664724750225035958083,
3907092433071693367503295984736881663437,
7592845601719029551458860883445286391430,
5475219429664969302910267468440789615660,
4781544273413289362182226154912725390189,
7867659253120595111782620379028863507464,
1129517743364295935964779782959948426810,
9157937596649548833480859808285783362497,
0661153125336172913035007490841950968426,
4897793622150157559612742855736947316793,
0135000799609951041814820072083496055032,
9820733767854240407424962733998295605815,
4422491503978858396048989875636553598254,
9108169028679358711351933960760912293732,
6836356778841260457302022845562365799896,
7207962173820998394198921147416385820539,
5033789312842213184294219025382370751586,
2156460869437112594770641614777000054262,
6827303336333882467441663428143610190892,
7458783246335838207341263497080265820694,
1799418689622906831398156582859593985505,
1026495693742839711262251272570167744625,
4937108984344602502214275021948532282713,
1244292279361105945006287343825241833174,
1631867469431766697060701367554026722490,
0264682055011045509082161168053351390658,
7131308488697248542709645503509825468249,
1976270291766298321294996043299290302771,
0000174930899249209951533831840156062471,
7157937082635530305247847868791408553355,
0408764134907940049997344362543826013116,
8495842767017130180508335062440081654267,
8449184911153623211512108421351801119444,
8607044950285854154439876726349380009312,
6468623765270636814977543569022716113321,
1049966087805600375446031244149247661731,
6316127973654134556446169749801058792346,
6364777627994652546184974534503346533249,
6911271118615683723779367135605347012929,
9552581919512998142955154563579357228851,
4223894002689485201844479637178274107677,
0140251875663916635825990297181603786407,
7767939936612825660489574467032278151920,
8289883705187044925335342491191321676570,
2961502679143689872575617569554406834771,
3345716775224513960525039804418202693758,
7132880815731337991295266030399844773401,
4750974208587839944437740004382620531399,
6065191673612913361915691686705256266128,
0406251261378895535061345987696562411476,
8751695638126096961624423234598312211401,
2371687274971783932793564498536427351489,
2453322534944151113236020115135675564573,
1946760818857975725693271202236089276118,
0949934404821781945809735312502497183497,
6170977150620326153478232764651277386731,
7264914756699028112999686961184024084316,
2570469072656907629538224975123866955413,
6769309762705225362076625683320254576777,
1235899138850090912808474227177624553632,
3598449950704026421406785025389194304506,
7576936380989414682470803196778734070459,
4611660966236852245509952440037177723674,
4747193431333168538497936741779931578552,
5854425314117376383471646797759338120829,
3368580859366263889436785225862956055861,
3361680407357875764388341886390117081426,
5078618127679851529078907021565651937448,
3545844942817305679399799088852169351120,
8704521578844475265930422566204059824001,
1995898421295996174766321318936431675741,
5038186310715363990510271148166026396776,
1503451114014817969039054623716281436961,
0692853022338810833644709378284852929363,
3544946946348684390773154205253564280495,
3987376539995451732499271715721477250855,
9838672065140801513231471568405122755654,
1430296716818551223432629934565411610145,
1437542597007015749305390687567947067858,
6772858562255716289907291579417058587880,
5123096522324616064288364720894378447206,
2126473168201283817571828262195397392356,
4563048496555352731804974257406518490534,
4636319717420003347004433704615082795718,
6376042262073679964381496665233330091233,
8141290202604721483892431204054623767145,
0303938486397472155910364796950794176098,
6040657879396007269360262349814423048769,
0551169476088038864627917593605495540900,
9022023465196133193157961490731269268680,
8665986748086073137190817549881224258106,
1005782728609825705222287571665267298955,
3200716277935363272397378987432817976274,
7910865649649866556718149915953129586419,
4345273149554092835483498721484734572067,
2940280662713336896733857668839068505912,
3905973391902424811671647959845942274318,
6244292904950739508429769277669844418483,
7078039776216471609158411185227274980297,
0406203593200613543519329287331380003896,
6656946776048895073415527438849621509485,
1488095159589591481754990884522617562924,
8328442575175653043266307782203365783780,
5872018403773731270396028719218615055054,
7362953516333669846233046947915945685380,
6650200104052715814264234703694979195220,
4997661173147045668136471247606705612039,
3240395076672592740587842878377362631074,
9643106464947522222368044445406626542051,
2784967852380845823352546623917577546997,
9106446540843020809505833966078756536264,
4627631394345536542504765359544482814879,
5272970848672224219148030343201703790217,
2647969298912351945112661367020454780650,
2303962633579442831066803007045169869358,
4513168576862752134721446221862319936972,
5007689013791997527640461111594556649725,
3873006807887443518070486637838415498201,
5145291278732294637134370974153311890143,
8545669678386329195043354714198584606764,
8133750267822383551186004644647859871106,
0182721282100044950547310190696277876648,
2413969443195638629675133062833135011863,
5257270661604684017426596643671143188680,
4809563227371764044070503615553829139486,
7427158714341087138222033670609581389933,
9185852061518773493569612290972727029128,
2564009036603965430677372078836629730251,
9793149278410230484486178574325287764883,
5264106041568328014083164134766021616560,
9127209536672553222654770975744503256678,
5959570266796351232684697896536046913417,
6988126346069433637367928694177607237527,
6481150147547161036151814553161157226777,
6982045658277087807221066489550809947582,
8284638139608633706768538156706847872766,
9975634472006352014955413729935701816937,
1212165943287520437035755087181561315638,
3933340884699172459759458874723040901462,
5772464239534052592594133902313096438494,
1285064572971142607221815762591412318398,
8121607602824382881325634810303009097166,
4682878088903499224263176288609960058769,
4577767567422864592470774638685673981020,
5214716387367164303927222051807836526802,
3766178536944462580406693780504869062125,
6646684857985786997415886483209923813156,
2287181604942946988354260357403051283409,
8443961487466974982453716548815210518716,
8711163670225595224980044922816725595699,
7542774016809427491974205750518558691944,
9521009972318734695267901875469387317596,
6278950375557025616789062001935546054709,
9144472577267497015983926342518307638480,
5438220934082890688968026200597597848686,
0311936761466407233855858765689166135985,
1775889239308661824074037402421208110769,

1.2 单个.xlsx文件

        一个表格文件(data.xlsx)中包含computers表、cameras表以及monitors表

computers表
cameras表
monitors表

2、实现思路

        当然,要实现将设备的id正确读取出来且保存值json文件当中,同时兼顾速度、质量和效率,主要存在两大类实现思路:

  1. 借助IDE软件,寻找规律后利用查找和批量替换功能,再结合复制和粘贴功能,可将原始数据转换为正确的结果保存到json文件当中;
  2. 利用高级程序设计语言编写代码,查找API读取文本文件和表格文件,构造正确数据结构,将读取的编码存储至json文件即可。

        第一类思路侧重于使用软件,掌握软件中的功能并配合一定技巧就可;第二类思路从代码出发,解析原始数据并重构结果数据,更加灵活强大。本文主要讲解后一类实现方法。

3、Python代码实现

        下面采用Python编程语言进行实现,主要以具体代码和运行结果进行说明。Python依赖库(openpyxl和pandas)安装如下:

pip install openpyxl (3.0.7)
pip install pandas (1.1.5)

3.1 Python代码

import pandas as pd
import json
from datetime import datetime

def getFilepaths(filePath):
    ls = []
    if filePath.find('\\') != -1:
        ls = filePath.split('\\')
    elif filePath.find('/') != -1:
        ls = filePath.split('/')
    if len(ls) > 1:
        folder = ''
        for i in range(0, len(ls)-1):
            folder += ls[i] + '/'
        return folder + ls[-1].split('.')[0]
    else:
        return ''

def save_json_file(file_save_path, content):
    with open(file_save_path, 'w') as json_file:
        json.dump(content, json_file, indent=4)
        print('Result is saved to ' + file_save_path)

def getIDsFromDict(dict):
    ks = list(dict.keys())
    vs = list(dict.values())[0]
    r = []
    if len(ks) == 1:
        r.append('' + ks[0] + '')
        for i in range(0, len(vs)):
            r.append('' +  vs[i] + '')
    return r

def generate_json_ids_from_excel(file_path):
    data = pd.read_excel(file_path, sheet_name=None)
    sheet_names = list(data.keys())
    sheet_vals = list(data.values())
    res = {}
    for i in range(0, len(sheet_names)):
        k = sheet_names[i]
        v = getIDsFromDict(sheet_vals[i].to_dict())
        res[k] = v
    current_time = datetime.now().strftime("%Y_%m_%d_%H_%M_%S")
    save_path = getFilepaths(file_path) + '-fromExcel-' + current_time + '.json'
    save_json_file(save_path, res)

def getIDsFromTxt(txt_fie_path):
    s = ''
    with open(txt_fie_path, 'r') as file:
        line = file.read()
        line = line.strip().replace(',', '')
        s += '' + line + ''
    return s.split('\n')

def generate_json_ids_from_txt(folder, names):
    re = {}
    for i in range(0, len(names)):
        k = names[i]
        txt_fie_path = folder + names[i] + '.txt'
        v = getIDsFromTxt(txt_fie_path)
        re[k] = v
    current_time = datetime.now().strftime("%Y_%m_%d_%H_%M_%S")
    save_path = fold + 'data-fromTxt-' + current_time + '.json'
    save_json_file(save_path, re)

if __name__ == '__main__':
    file_path = 'E:\\jing_zhong\\MyServer\\data.xlsx'
    generate_json_ids_from_excel(file_path)
    names = ['cameras', 'computers', 'monitors']
    fold = 'E:\\jing_zhong\\MyServer\\'
    generate_json_ids_from_txt(fold, names)

3.2 运行结果(PyCharm)

①PyCharm运行代码
②打开记事本查看

3.3 浏览器查看json内容

        鼠标可将json文件拖拽至打开的浏览器窗口内,键盘按F12可打开开发者工具窗口,在网络标签下可直观查看具体内容。

(1)Chrome查看data-fromTxt-2024_03_19_00_10_19.json
(2)Chrome查看data-fromExcel-2024_03_19_00_10_19.json

4、小结

        当然,功能实现不应局限于编程语言类型,但各类语言优势不同,比如C#、Java、JavaScript、C++同样可解决上述问题,但考虑简单使用性和打包产品化的话,个人首推跨平台脚本语言Python和JavaScript,大家应该使用实用工具致力于问题的高效解决,多多参考开源代码,专注完成个性化的定制任务,力求给出多种可行的解决方案,同时合理利用各种类库、SDK、API接口方法,还可相互对比执行速度和正确性互检

        技术服务于功能,功能满足于需求,需求来源于实际生活,美好生活离不开科技进步和长远发展。当今时代生成式技术不断发展,基于巨量的数据进行大规模长周期多节点的有效迭代训练和测试,ChatGPTSoraGrokAI大模型横空出世,轰动教育界、学术界和工业界,随之而来引发一系列的技术革命,悄无声息地影响千行百业,终将推动生产力的进步和问答式创造力的提升

        总之,各种数据标准与格式需要考虑兼容性并能够按需有效转换,尽管数据处理应用、软件和工具层出不穷,普通用户需要阅读使用手册才能进行作业,对于开发者而言,一技之长莫过于掌握其中规律,牢记万变不离其宗的道理,在应对各种处理任务时从容不迫、游刃有余,正所谓 “一招鲜,吃遍天”,愿各位小伙伴、开发者和工程师们牢记初心,携手相助,共克时艰,勇往直前!!!

   海纳百川,有容乃大!!!             开源挑战实力,开源互促共享;开源思路广阔,开源呼唤合作;开源尽显自信,开源拥抱未来。 

注:本文所有数据均为模拟数据,仅供测试功能效果使用!

  • 11
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值