Python实现id导入至json文件 2024.3.19
- 需求分析
- 1、输入数据介绍
- 1.1 三个.txt文件
- 1.1.1 computers.txt(计算机)
- 1.1.2 cameras.txt(摄像头)
- 1.1.3 monitors.txt(显示器)
- 1.2 单个.xlsx文件
- 2、实现思路
- 3、Python代码实现
- 3.1 Python代码
- 3.2 运行结果(PyCharm)
- 3.3 浏览器查看json内容
- 4、小结
需求分析
由于 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表
|
|
|
2、实现思路
当然,要实现将设备的id
正确读取出来且保存值json
文件当中,同时兼顾速度、质量和效率,主要存在两大类
实现思路:
- 借助IDE软件,寻找规律后利用查找和批量替换功能,再结合复制和粘贴功能,可将原始数据转换为正确的结果保存到json文件当中;
- 利用高级程序设计语言编写代码,查找
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)
|
|
3.3 浏览器查看json内容
鼠标可将json
文件拖拽至打开的浏览器窗口内,键盘按F12可打开开发者工具窗口,在网络标签下可直观查看具体内容。
|
|
4、小结
当然,功能实现不应局限于编程语言类型,但各类语言优势不同,比如C#、Java、JavaScript、C++同样可解决上述问题
,但考虑简单使用性和打包产品化的话,个人首推跨平台脚本语言Python和JavaScript,大家应该使用实用工具致力于问题的高效解决,多多参考开源代码,专注完成个性化的定制任务,力求给出多种可行的解决方案,同时合理利用各种类库、SDK、API接口方法
,还可相互对比执行速度和正确性互检。
技术服务于功能,功能满足于需求,需求来源于实际生活,美好生活离不开科技进步和长远发展。
当今时代生成式技术不断发展,基于巨量的数据进行大规模长周期多节点的有效迭代训练和测试,ChatGPT
、Sora
、Grok等AI
大模型横空出世,轰动教育界、学术界和工业界
,随之而来引发一系列的技术革命,悄无声息地影响千行百业,终将推动生产力的进步和问答式创造力的提升。
总之,各种数据标准与格式需要考虑兼容性并能够按需有效转换,尽管数据处理应用、软件和工具层出不穷,普通用户需要阅读使用手册才能进行作业,对于开发者而言,一技之长莫过于掌握其中规律,牢记万变不离其宗的道理,在应对各种处理任务时从容不迫、游刃有余
,正所谓 “一招鲜,吃遍天”,愿各位小伙伴、开发者和工程师们牢记初心,携手相助,共克时艰,勇往直前!!!
海纳百川,有容乃大!!! 开源挑战实力,开源互促共享;开源思路广阔,开源呼唤合作;开源尽显自信,开源拥抱未来。
注:本文所有数据均为模拟数据,仅供测试功能效果使用!