Change Value of XML attribute using xml.etree.ElementTree - python

I have a xml like this. I am not sharing full one but a snippet
<ALLINVENTORYENTRIES.LIST>
<STOCKITEMNAME>Item1--1ltr</STOCKITEMNAME>
<ISDEEMEDPOSITIVE>No</ISDEEMEDPOSITIVE>
<ISLASTDEEMEDPOSITIVE>No</ISLASTDEEMEDPOSITIVE>
<ISAUTONEGATE>No</ISAUTONEGATE>
<ISCUSTOMSCLEARANCE>No</ISCUSTOMSCLEARANCE>
<ISTRACKCOMPONENT>No</ISTRACKCOMPONENT>
<ISTRACKPRODUCTION>No</ISTRACKPRODUCTION>
<ISPRIMARYITEM>No</ISPRIMARYITEM>
<ISSCRAP>No</ISSCRAP>
<RATE>1805.08/pc</RATE>
<AMOUNT>36101.60</AMOUNT>
<ACTUALQTY> 20 pc</ACTUALQTY>
<BILLEDQTY> 20 pc</BILLEDQTY>
<INCLVATRATE>2129.99/pc</INCLVATRATE>
<BATCHALLOCATIONS.LIST>
<MFDON>20220813</MFDON>
<GODOWNNAME>Main Location</GODOWNNAME>
<BATCHNAME>ABCDEF</BATCHNAME>
<DESTINATIONGODOWNNAME>Main Location</DESTINATIONGODOWNNAME>
<INDENTNO/>
<ORDERNO/>
<TRACKINGNUMBER/>
<DYNAMICCSTISCLEARED>No</DYNAMICCSTISCLEARED>
<AMOUNT>36101.60</AMOUNT>
<ACTUALQTY> 20 pc</ACTUALQTY>
<BILLEDQTY> 20 pc</BILLEDQTY>
<INCLVATRATE>2129.99/pc</INCLVATRATE>
<EXPIRYPERIOD JD="44785" P="31-Aug-24">31-Aug-24</EXPIRYPERIOD>
<ADDITIONALDETAILS.LIST> </ADDITIONALDETAILS.LIST>
<VOUCHERCOMPONENTLIST.LIST> </VOUCHERCOMPONENTLIST.LIST>
</BATCHALLOCATIONS.LIST>
<ACCOUNTINGALLOCATIONS.LIST>
<OLDAUDITENTRYIDS.LIST TYPE="Number">
<OLDAUDITENTRYIDS>-1</OLDAUDITENTRYIDS>
</OLDAUDITENTRYIDS.LIST>
<LEDGERNAME>Sales</LEDGERNAME>
<CLASSRATE>100.00000</CLASSRATE>
<GSTCLASS/>
<GSTOVRDNNATURE>Sales Taxable</GSTOVRDNNATURE>
<ISDEEMEDPOSITIVE>No</ISDEEMEDPOSITIVE>
<LEDGERFROMITEM>No</LEDGERFROMITEM>
<REMOVEZEROENTRIES>No</REMOVEZEROENTRIES>
<ISPARTYLEDGER>No</ISPARTYLEDGER>
<ISLASTDEEMEDPOSITIVE>No</ISLASTDEEMEDPOSITIVE>
<ISCAPVATTAXALTERED>No</ISCAPVATTAXALTERED>
<ISCAPVATNOTCLAIMED>No</ISCAPVATNOTCLAIMED>
<AMOUNT>36101.60</AMOUNT>
<SERVICETAXDETAILS.LIST> </SERVICETAXDETAILS.LIST>
<BANKALLOCATIONS.LIST> </BANKALLOCATIONS.LIST>
<BILLALLOCATIONS.LIST> </BILLALLOCATIONS.LIST>
<INTERESTCOLLECTION.LIST> </INTERESTCOLLECTION.LIST>
<OLDAUDITENTRIES.LIST> </OLDAUDITENTRIES.LIST>
<ACCOUNTAUDITENTRIES.LIST> </ACCOUNTAUDITENTRIES.LIST>
<AUDITENTRIES.LIST> </AUDITENTRIES.LIST>
<INPUTCRALLOCS.LIST> </INPUTCRALLOCS.LIST>
<DUTYHEADDETAILS.LIST> </DUTYHEADDETAILS.LIST>
<EXCISEDUTYHEADDETAILS.LIST> </EXCISEDUTYHEADDETAILS.LIST>
<RATEDETAILS.LIST> </RATEDETAILS.LIST>
<SUMMARYALLOCS.LIST> </SUMMARYALLOCS.LIST>
<STPYMTDETAILS.LIST> </STPYMTDETAILS.LIST>
<EXCISEPAYMENTALLOCATIONS.LIST> </EXCISEPAYMENTALLOCATIONS.LIST>
<TAXBILLALLOCATIONS.LIST> </TAXBILLALLOCATIONS.LIST>
<TAXOBJECTALLOCATIONS.LIST> </TAXOBJECTALLOCATIONS.LIST>
<TDSEXPENSEALLOCATIONS.LIST> </TDSEXPENSEALLOCATIONS.LIST>
<VATSTATUTORYDETAILS.LIST> </VATSTATUTORYDETAILS.LIST>
<COSTTRACKALLOCATIONS.LIST> </COSTTRACKALLOCATIONS.LIST>
<REFVOUCHERDETAILS.LIST> </REFVOUCHERDETAILS.LIST>
<INVOICEWISEDETAILS.LIST> </INVOICEWISEDETAILS.LIST>
<VATITCDETAILS.LIST> </VATITCDETAILS.LIST>
<ADVANCETAXDETAILS.LIST> </ADVANCETAXDETAILS.LIST>
</ACCOUNTINGALLOCATIONS.LIST>
<DUTYHEADDETAILS.LIST> </DUTYHEADDETAILS.LIST>
<SUPPLEMENTARYDUTYHEADDETAILS.LIST> </SUPPLEMENTARYDUTYHEADDETAILS.LIST>
<TAXOBJECTALLOCATIONS.LIST> </TAXOBJECTALLOCATIONS.LIST>
<REFVOUCHERDETAILS.LIST> </REFVOUCHERDETAILS.LIST>
<EXCISEALLOCATIONS.LIST> </EXCISEALLOCATIONS.LIST>
<EXPENSEALLOCATIONS.LIST> </EXPENSEALLOCATIONS.LIST>
<UDF:FSITEMPESTUDF.LIST DESC="`FSItempestUDF`" ISLIST="YES" TYPE="String" INDEX="1006">
<UDF:FSITEMPESTUDF DESC="`FSItempestUDF`">-</UDF:FSITEMPESTUDF>
</UDF:FSITEMPESTUDF.LIST>
<UDF:FSITEMIN_UDF.LIST DESC="`FSitemIn_UDF`" ISLIST="YES" TYPE="String" INDEX="1012">
<UDF:FSITEMIN_UDF DESC="`FSitemIn_UDF`">-</UDF:FSITEMIN_UDF>
</UDF:FSITEMIN_UDF.LIST>
<UDF:SOLDFORWHICHCROP.LIST DESC="`SoldForWhichCrop`" ISLIST="YES" TYPE="String" INDEX="8897">
<UDF:SOLDFORWHICHCROP DESC="`SoldForWhichCrop`">-</UDF:SOLDFORWHICHCROP>
</UDF:SOLDFORWHICHCROP.LIST>
</ALLINVENTORYENTRIES.LIST>
I want to set the value of RATE to new value
I tried below code
import xml.etree.ElementTree as ET
tree = ET.parse(r'Book1.xml')
root = tree.getroot()
for i in root[1][0][1][0][0]:
#print(i.tag)
if i.tag == "ALLINVENTORYENTRIES.LIST":
for elem in i:
#print(elem.tag)
rpt_side = i.find('RATE')
print(rpt_side.text)
rpt_side.set(rpt_side.tag, "2000")
#print(a)
print(rpt_side.text)
#print(elem)
It is adding new value as
<RATE RATE="2000">1805.08/pc</RATE>
I want value same as it is in my xml

The set() method in ElementTree sets the attribute value of an attribute of an element to a particular value. If the attribute doesn't exist - the method creates it.
So
rpt_side.set(rpt_side.tag, "2000")
creates an attribute with a name equal to the name of the element in question (rpt_side.tag) (that is RATE) and assigns to it 2000 as the attribute value.
What you are probably looking for is something like:
rpt_side.text="2000"
which should leave the element intact, except for the new text value.

Related

How to get a certain value from a text file

I want to get a value from an API. However I am unable to tell Python what I want to do.
This is my current code:
response = requests.get('https://sms-service-online.com/api/getServicesAndCost/?country=0&operator=any&lang=en')
data = response.json()
plain = data["data"]
However the data which I want to display in my script is in the ["data"] part of the json. It is kind of a json inside a json.
For example: with
print(plain)
I would recieve this data:
[{"cost":"0.45","id":0,"servise":"VK.com","serviseImg":"bg-vk","number":"Numbers: 3047","value":"vk"},{"cost":"0.07","id":1,"servise":"OK.ru","serviseImg":"bg-ok","number":"Numbers: 14397","value":"ok"},{"cost":"0.15","id":2,"servise":"Whatsapp","serviseImg":"bg-wa","number":"Numbers: 17610","value":"wa"},{"cost":"0.18","id":3,"servise":"Viber","serviseImg":"bg-vi","number":"Numbers: 413","value":"vi"},{"cost":"0.00","id":4,"servise":"Telegram","serviseImg":"bg-tg","number":"Numbers: 0","value":"tg"},{"cost":"0.30","id":5,"servise":"WeChat","serviseImg":"bg-wb","number":"Numbers: 28389","value":"wb"},{"cost":"0.15","id":6,"servise":"Google,youtube,Gmail","serviseImg":"bg-go","number":"Numbers: 15419","value":"go"},{"cost":"0.11","id":7,"servise":"avito","serviseImg":"bg-av","number":"Numbers: 17379","value":"av"},{"cost":"0.07","id":8,"servise":"facebook","serviseImg":"bg-fb","number":"Numbers: 21636","value":"fb"},{"cost":"0.03","id":9,"servise":"Twitter","serviseImg":"bg-tw","number":"Numbers: 26864","value":"tw"},{"cost":"0.05","id":10,"servise":"Uber","serviseImg":"bg-ub","number":"Numbers: 20975","value":"ub"},{"cost":"0.22","id":11,"servise":"Qiwi","serviseImg":"bg-qw","number":"Numbers: 20371","value":"qw"},{"cost":"0.02","id":12,"servise":"Gett","serviseImg":"bg-gt","number":"Numbers: 28501","value":"gt"},{"cost":"0.00","id":13,"servise":"OLX","serviseImg":"bg-sn","number":"Numbers: 0","value":"sn"},{"cost":"0.14","id":14,"servise":"Instagram","serviseImg":"bg-ig","number":"Numbers: 3799","value":"ig"},{"cost":"0.00","id":15,"servise":"Hezzl","serviseImg":"bg-ss","number":"Numbers: 0","value":"ss"},{"cost":"0.07","id":16,"servise":"\u042e\u043b\u0430","serviseImg":"bg-ym","number":"Numbers: 17597","value":"ym"},{"cost":"0.03","id":17,"servise":"Mail.ru","serviseImg":"bg-ma","number":"Numbers: 17936","value":"ma"},{"cost":"0.03","id":18,"servise":"Microsoft","serviseImg":"bg-mm","number":"Numbers: 3830","value":"mm"},{"cost":"0.03","id":19,"servise":"Airbnb","serviseImg":"bg-uk","number":"Numbers: 28266","value":"uk"},{"cost":"0.00","id":20,"servise":"Line messenger","serviseImg":"bg-me","number":"Numbers: 0","value":"me"},{"cost":"0.03","id":21,"servise":"Yahoo","serviseImg":"bg-mb","number":"Numbers: 19077","value":"mb"},{"cost":"0.00","id":22,"servise":"Drugvokrug.ru","serviseImg":"bg-we","number":"Numbers: 0","value":"we"},{"cost":"0.05","id":23,"servise":"5ka.ru","serviseImg":"bg-bd","number":"Numbers: 27541","value":"bd"},{"cost":"0.00","id":24,"servise":"HQ Trivia","serviseImg":"bg-kp","number":"Numbers: 0","value":"kp"},{"cost":"0.65","id":25,"servise":"Delivery Club","serviseImg":"bg-dt","number":"Numbers: 26812","value":"dt"},{"cost":"0.03","id":26,"servise":"Yandex","serviseImg":"bg-ya","number":"Numbers: 20944","value":"ya"},{"cost":"0.05","id":27,"servise":"Steam","serviseImg":"bg-mt","number":"Numbers: 28121","value":"mt"},{"cost":"0.04","id":28,"servise":"Tinder","serviseImg":"bg-oi","number":"Numbers: 27478","value":"oi"},{"cost":"0.02","id":29,"servise":"Mamba, MeetMe","serviseImg":"bg-fd","number":"Numbers: 25328","value":"fd"},{"cost":"0.00","id":30,"servise":"Dent","serviseImg":"bg-zz","number":"Numbers: 0","value":"zz"},{"cost":"0.07","id":31,"servise":"KakaoTalk","serviseImg":"bg-kt","number":"Numbers: 27823","value":"kt"},{"cost":"0.04","id":32,"servise":"AOL","serviseImg":"bg-pm","number":"Numbers: 23369","value":"pm"},{"cost":"0.02","id":33,"servise":"LinkedIN","serviseImg":"bg-tn","number":"Numbers: 32192","value":"tn"},{"cost":"0.03","id":34,"servise":"Tencent QQ","serviseImg":"bg-qq","number":"Numbers: 27883","value":"qq"},{"cost":"0.06","id":35,"servise":"Magnit","serviseImg":"bg-mg","number":"Numbers: 993","value":"mg"},{"cost":"0.00","id":36,"servise":"pof.com","serviseImg":"bg-pf","number":"Numbers: 0","value":"pf"},{"cost":"0.03","id":37,"servise":"Yalla","serviseImg":"bg-yl","number":"Numbers: 27822","value":"yl"},{"cost":"0.00","id":38,"servise":"kolesa.kz","serviseImg":"bg-kl","number":"Numbers: 0","value":"kl"},{"cost":"0.03","id":39,"servise":"premium.one","serviseImg":"bg-po","number":"Numbers: 25869","value":"po"},{"cost":"0.07","id":40,"servise":"Naver","serviseImg":"bg-nv","number":"Numbers: 27582","value":"nv"},{"cost":"0.03","id":41,"servise":"Netflix","serviseImg":"bg-nf","number":"Numbers: 27715","value":"nf"},{"cost":"0.00","id":42,"servise":"icq","serviseImg":"bg-iq","number":"Numbers: 0","value":"iq"},{"cost":"0.00","id":43,"servise":"Onlinerby","serviseImg":"bg-ob","number":"Numbers: 0","value":"ob"},{"cost":"0.00","id":44,"servise":"kufarby","serviseImg":"bg-kb","number":"Numbers: 0","value":"kb"},{"cost":"0.03","id":45,"servise":"Imo","serviseImg":"bg-im","number":"Numbers: 25198","value":"im"},{"cost":"0.00","id":46,"servise":"Michat","serviseImg":"bg-mc","number":"Numbers: 0","value":"mc"},{"cost":"0.03","id":47,"servise":"Discord","serviseImg":"bg-ds","number":"Numbers: 22011","value":"ds"},{"cost":"0.00","id":48,"servise":"Seosprint","serviseImg":"bg-vv","number":"Numbers: 0","value":"vv"},{"cost":"0.00","id":49,"servise":"Monobank","serviseImg":"bg-ji","number":"Numbers: 0","value":"ji"},{"cost":"0.03","id":50,"servise":"TikTok\/Douyin","serviseImg":"bg-lf","number":"Numbers: 26299","value":"lf"},{"cost":"0.00","id":51,"servise":"Ukrnet","serviseImg":"bg-hu","number":"Numbers: 0","value":"hu"},{"cost":"0.00","id":52,"servise":"Skout","serviseImg":"bg-wg","number":"Numbers: 0","value":"wg"},{"cost":"0.00","id":53,"servise":"EasyPay","serviseImg":"bg-rz","number":"Numbers: 0","value":"rz"},{"cost":"0.00","id":54,"servise":"Q12 Trivia","serviseImg":"bg-vf","number":"Numbers: 0","value":"vf"},{"cost":"0.00","id":55,"servise":"Pyro Music","serviseImg":"bg-ny","number":"Numbers: 0","value":"ny"},{"cost":"0.00","id":56,"servise":"Wolt","serviseImg":"bg-rr","number":"Numbers: 0","value":"rr"},{"cost":"0.00","id":57,"servise":"CliQQ","serviseImg":"bg-fe","number":"Numbers: 0","value":"fe"},{"cost":"0.00","id":58,"servise":"ssoidnet","serviseImg":"bg-la","number":"Numbers: 0","value":"la"},{"cost":"0.00","id":59,"servise":"Zoho","serviseImg":"bg-zh","number":"Numbers: 0","value":"zh"},{"cost":"0.00","id":60,"servise":"Ticketmaster","serviseImg":"bg-gp","number":"Numbers: 0","value":"gp"},{"cost":"0.05","id":61,"servise":"Amazon","serviseImg":"bg-am","number":"Numbers: 25313","value":"am"},{"cost":"0.00","id":62,"servise":"Olacabs","serviseImg":"bg-ly","number":"Numbers: 0","value":"ly"},{"cost":"0.00","id":63,"servise":"Rambler","serviseImg":"bg-tc","number":"Numbers: 0","value":"tc"},{"cost":"0.02","id":64,"servise":"ProtonMail","serviseImg":"bg-dp","number":"Numbers: 30668","value":"dp"},{"cost":"0.00","id":65,"servise":"NRJ Music Awards","serviseImg":"bg-pg","number":"Numbers: 0","value":"pg"},{"cost":"0.03","id":66,"servise":"Citymobil","serviseImg":"bg-yf","number":"Numbers: 26997","value":"yf"},{"cost":"0.00","id":67,"servise":"MIRATORG","serviseImg":"bg-op","number":"Numbers: 0","value":"op"},{"cost":"0.03","id":68,"servise":"PGbonus","serviseImg":"bg-fx","number":"Numbers: 27563","value":"fx"},{"cost":"0.03","id":69,"servise":"MEGA","serviseImg":"bg-qr","number":"Numbers: 27848","value":"qr"},{"cost":"0.03","id":70,"servise":"SportMaster","serviseImg":"bg-yk","number":"Numbers: 26584","value":"yk"},{"cost":"0.03","id":71,"servise":"Careem","serviseImg":"bg-ls","number":"Numbers: 27873","value":"ls"},{"cost":"0.03","id":72,"servise":"BIGO LIVE","serviseImg":"bg-bl","number":"Numbers: 25421","value":"bl"},{"cost":"0.03","id":73,"servise":"MyMusicTaste","serviseImg":"bg-mu","number":"Numbers: 27898","value":"mu"},{"cost":"0.03","id":74,"servise":"Snapchat","serviseImg":"bg-fu","number":"Numbers: 27758","value":"fu"},{"cost":"0.00","id":75,"servise":"Keybase","serviseImg":"bg-bf","number":"Numbers: 0","value":"bf"},{"cost":"0.03","id":76,"servise":"OZON","serviseImg":"bg-sg","number":"Numbers: 26595","value":"sg"},{"cost":"0.03","id":77,"servise":"Wildberries","serviseImg":"bg-uu","number":"Numbers: 27220","value":"uu"},{"cost":"0.05","id":78,"servise":"BlaBlaCar","serviseImg":"bg-ua","number":"Numbers: 24367","value":"ua"},{"cost":"0.09","id":79,"servise":"Alibaba","serviseImg":"bg-ab","number":"Numbers: 17818","value":"ab"},{"cost":"0.00","id":80,"servise":"Inboxlv","serviseImg":"bg-iv","number":"Numbers: 0","value":"iv"},{"cost":"0.00","id":81,"servise":"Nttgame","serviseImg":"bg-zy","number":"Numbers: 0","value":"zy"},{"cost":"0.00","id":82,"servise":"Surveytime","serviseImg":"bg-gd","number":"Numbers: 0","value":"gd"},{"cost":"0.00","id":83,"servise":"Mylove","serviseImg":"bg-fy","number":"Numbers: 0","value":"fy"},{"cost":"0.02","id":84,"servise":"mosru","serviseImg":"bg-ce","number":"Numbers: 27173","value":"ce"},{"cost":"0.00","id":85,"servise":"Truecaller","serviseImg":"bg-tl","number":"Numbers: 0","value":"tl"},{"cost":"0.00","id":86,"servise":"Globus","serviseImg":"bg-hm","number":"Numbers: 0","value":"hm"},{"cost":"0.03","id":87,"servise":"Bolt","serviseImg":"bg-tx","number":"Numbers: 27378","value":"tx"},{"cost":"0.00","id":88,"servise":"Shopee","serviseImg":"bg-ka","number":"Numbers: 0","value":"ka"},{"cost":"0.03","id":89,"servise":"Perekrestok.ru","serviseImg":"bg-pl","number":"Numbers: 27883","value":"pl"},{"cost":"0.03","id":90,"servise":"Burger King","serviseImg":"bg-ip","number":"Numbers: 27764","value":"ip"},{"cost":"0.00","id":91,"servise":"Prom","serviseImg":"bg-cm","number":"Numbers: 0","value":"cm"},{"cost":"0.03","id":92,"servise":"AliPay","serviseImg":"bg-hw","number":"Numbers: 27166","value":"hw"},{"cost":"0.00","id":93,"servise":"Karusel","serviseImg":"bg-de","number":"Numbers: 0","value":"de"},{"cost":"0.00","id":94,"servise":"IVI","serviseImg":"bg-jc","number":"Numbers: 0","value":"jc"},{"cost":"0.03","id":95,"servise":"inDriver","serviseImg":"bg-rl","number":"Numbers: 27534","value":"rl"},{"cost":"0.03","id":96,"servise":"Happn","serviseImg":"bg-df","number":"Numbers: 27785","value":"df"},{"cost":"0.00","id":97,"servise":"RuTube","serviseImg":"bg-ui","number":"Numbers: 0","value":"ui"},{"cost":"0.03","id":98,"servise":"Magnolia","serviseImg":"bg-up","number":"Numbers: 27884","value":"up"},{"cost":"0.03","id":99,"servise":"Foodpanda","serviseImg":"bg-nz","number":"Numbers: 27493","value":"nz"},{"cost":"0.00","id":100,"servise":"Weibo","serviseImg":"bg-kf","number":"Numbers: 0","value":"kf"},{"cost":"0.00","id":101,"servise":"BillMill","serviseImg":"bg-ri","number":"Numbers: 0","value":"ri"},{"cost":"0.00","id":102,"servise":"Quipp","serviseImg":"bg-cc","number":"Numbers: 0","value":"cc"},{"cost":"0.00","id":103,"servise":"Okta","serviseImg":"bg-lr","number":"Numbers: 0","value":"lr"},{"cost":"0.03","id":104,"servise":"JDcom","serviseImg":"bg-za","number":"Numbers: 27891","value":"za"},{"cost":"0.05","id":105,"servise":"MTS CashBack","serviseImg":"bg-da","number":"Numbers: 12860","value":"da"},{"cost":"0.00","id":106,"servise":"Fiqsy","serviseImg":"bg-ug","number":"Numbers: 0","value":"ug"},{"cost":"0.00","id":107,"servise":"KuCoinPlay","serviseImg":"bg-sq","number":"Numbers: 0","value":"sq"},{"cost":"0.00","id":108,"servise":"Papara","serviseImg":"bg-zr","number":"Numbers: 0","value":"zr"},{"cost":"0.00","id":109,"servise":"Wish","serviseImg":"bg-xv","number":"Numbers: 0","value":"xv"},{"cost":"0.00","id":110,"servise":"Icrypex","serviseImg":"bg-cx","number":"Numbers: 0","value":"cx"},{"cost":"0.00","id":111,"servise":"PaddyPower","serviseImg":"bg-cw","number":"Numbers: 0","value":"cw"},{"cost":"0.05","id":112,"servise":"Baidu","serviseImg":"bg-li","number":"Numbers: 27813","value":"li"},{"cost":"0.00","id":113,"servise":"Dominos Pizza","serviseImg":"bg-dz","number":"Numbers: 0","value":"dz"},{"cost":"0.00","id":114,"servise":"paycell","serviseImg":"bg-xz","number":"Numbers: 0","value":"xz"},{"cost":"0.03","id":115,"servise":"Lenta","serviseImg":"bg-rd","number":"Numbers: 27651","value":"rd"},{"cost":"0.00","id":116,"servise":"Payberry","serviseImg":"bg-qb","number":"Numbers: 0","value":"qb"},{"cost":"0.03","id":117,"servise":"Drom","serviseImg":"bg-hz","number":"Numbers: 27673","value":"hz"},{"cost":"0.00","id":118,"servise":"GlobalTel","serviseImg":"bg-gl","number":"Numbers: 0","value":"gl"},{"cost":"0.00","id":119,"servise":"Deliveroo","serviseImg":"bg-zk","number":"Numbers: 0","value":"zk"},{"cost":"0.00","id":120,"servise":"Socios","serviseImg":"bg-ia","number":"Numbers: 0","value":"ia"},{"cost":"0.00","id":121,"servise":"Wmaraci","serviseImg":"bg-xl","number":"Numbers: 0","value":"xl"},{"cost":"0.00","id":122,"servise":"Yemeksepeti","serviseImg":"bg-yi","number":"Numbers: 0","value":"yi"},{"cost":"0.00","id":123,"servise":"Nike","serviseImg":"bg-ew","number":"Numbers: 0","value":"ew"},{"cost":"0.02","id":124,"servise":"myGLO","serviseImg":"bg-ae","number":"Numbers: 31671","value":"ae"},{"cost":"0.02","id":125,"servise":"YouStar","serviseImg":"bg-gb","number":"Numbers: 31133","value":"gb"},{"cost":"0.15","id":126,"servise":"\u0420\u0421\u0410","serviseImg":"bg-cy","number":"Numbers: 25178","value":"cy"},{"cost":"0.00","id":127,"servise":"RosaKhutor","serviseImg":"bg-qm","number":"Numbers: 0","value":"qm"},{"cost":"0.00","id":128,"servise":"eBay","serviseImg":"bg-dh","number":"Numbers: 0","value":"dh"},{"cost":"0.00","id":129,"servise":"Pay.kvartplata.ru+","serviseImg":"bg-yb","number":"Numbers: 0","value":"yb"},{"cost":"0.00","id":130,"servise":"GG","serviseImg":"bg-qe","number":"Numbers: 0","value":"qe"},{"cost":"0.03","id":131,"servise":"Grindr","serviseImg":"bg-yw","number":"Numbers: 4841","value":"yw"},{"cost":"0.00","id":132,"servise":"OffGamers","serviseImg":"bg-uz","number":"Numbers: 0","value":"uz"},{"cost":"0.00","id":133,"servise":"Hepsiburadacom","serviseImg":"bg-gx","number":"Numbers: 0","value":"gx"},{"cost":"0.00","id":134,"servise":"Coinbase","serviseImg":"bg-re","number":"Numbers: 0","value":"re"},{"cost":"0.00","id":135,"servise":"RADA NABU","serviseImg":"bg-tj","number":"Numbers: 0","value":"tj"},{"cost":"0.09","id":136,"servise":"PayPal","serviseImg":"bg-ts","number":"Numbers: 27144","value":"ts"},{"cost":"0.00","id":137,"servise":"hily","serviseImg":"bg-rt","number":"Numbers: 0","value":"rt"},{"cost":"0.00","id":138,"servise":"SneakersnStuff","serviseImg":"bg-sf","number":"Numbers: 0","value":"sf"},{"cost":"0.00","id":139,"servise":"Dostavista","serviseImg":"bg-sv","number":"Numbers: 0","value":"sv"},{"cost":"0.00","id":140,"servise":"32red","serviseImg":"bg-qi","number":"Numbers: 0","value":"qi"},{"cost":"0.02","id":141,"servise":"Blizzard","serviseImg":"bg-bz","number":"Numbers: 27797","value":"bz"},{"cost":"0.00","id":142,"servise":"ezbuy","serviseImg":"bg-db","number":"Numbers: 0","value":"db"},{"cost":"0.00","id":143,"servise":"CoinField","serviseImg":"bg-vw","number":"Numbers: 0","value":"vw"},{"cost":"0.00","id":144,"servise":"Airtel","serviseImg":"bg-zl","number":"Numbers: 0","value":"zl"},{"cost":"0.00","id":145,"servise":"Airtel","serviseImg":"bg-wf","number":"Numbers: 0","value":"wf"},{"cost":"0.00","id":146,"servise":"MrGreen","serviseImg":"bg-lw","number":"Numbers: 0","value":"lw"},{"cost":"0.00","id":147,"servise":"Rediffmail","serviseImg":"bg-co","number":"Numbers: 0","value":"co"},{"cost":"0.00","id":148,"servise":"miloan","serviseImg":"bg-ey","number":"Numbers: 0","value":"ey"},{"cost":"0.00","id":149,"servise":"Paytm","serviseImg":"bg-ge","number":"Numbers: 0","value":"ge"},{"cost":"0.00","id":150,"servise":"Dhani","serviseImg":"bg-os","number":"Numbers: 0","value":"os"},{"cost":"0.00","id":151,"servise":"CMTcuzdan","serviseImg":"bg-ql","number":"Numbers: 0","value":"ql"},{"cost":"0.00","id":152,"servise":"Mercado","serviseImg":"bg-cq","number":"Numbers: 0","value":"cq"},{"cost":"0.05","id":153,"servise":"DiDi","serviseImg":"bg-xk","number":"Numbers: 26447","value":"xk"},{"cost":"0.00","id":154,"servise":"Monese","serviseImg":"bg-py","number":"Numbers: 0","value":"py"},{"cost":"0.00","id":155,"servise":"Kotak811","serviseImg":"bg-rv","number":"Numbers: 0","value":"rv"},{"cost":"0.00","id":156,"servise":"Hopi","serviseImg":"bg-jl","number":"Numbers: 0","value":"jl"},{"cost":"0.00","id":157,"servise":"Trendyol","serviseImg":"bg-pr","number":"Numbers: 0","value":"pr"},{"cost":"0.00","id":158,"servise":"Justdating","serviseImg":"bg-pu","number":"Numbers: 0","value":"pu"},{"cost":"0.00","id":159,"servise":"Pairs","serviseImg":"bg-dk","number":"Numbers: 0","value":"dk"},{"cost":"0.00","id":160,"servise":"Touchance","serviseImg":"bg-fm","number":"Numbers: 0","value":"fm"},{"cost":"0.00","id":161,"servise":"SnappFood","serviseImg":"bg-ph","number":"Numbers: 0","value":"ph"},{"cost":"0.00","id":162,"servise":"NCsoft","serviseImg":"bg-sw","number":"Numbers: 0","value":"sw"},{"cost":"0.00","id":163,"servise":"Tosla","serviseImg":"bg-nr","number":"Numbers: 0","value":"nr"},{"cost":"0.00","id":164,"servise":"Ininal","serviseImg":"bg-hy","number":"Numbers: 0","value":"hy"},{"cost":"0.00","id":165,"servise":"Paysend","serviseImg":"bg-tr","number":"Numbers: 0","value":"tr"},{"cost":"0.00","id":166,"servise":"CDkeys","serviseImg":"bg-pq","number":"Numbers: 0","value":"pq"},{"cost":"0.00","id":167,"servise":"AVON","serviseImg":"bg-ff","number":"Numbers: 0","value":"ff"},{"cost":"0.03","id":168,"servise":"dodopizza","serviseImg":"bg-sd","number":"Numbers: 27739","value":"sd"},{"cost":"0.24","id":169,"servise":"McDonalds","serviseImg":"bg-ry","number":"Numbers: 7729","value":"ry"},{"cost":"0.00","id":170,"servise":"E bike Gewinnspiel","serviseImg":"bg-le","number":"Numbers: 0","value":"le"},{"cost":"0.00","id":171,"servise":"JKF","serviseImg":"bg-hr","number":"Numbers: 0","value":"hr"},{"cost":"0.00","id":172,"servise":"MyFishka","serviseImg":"bg-qa","number":"Numbers: 0","value":"qa"},{"cost":"0.00","id":173,"servise":"Craigslist","serviseImg":"bg-wc","number":"Numbers: 0","value":"wc"},{"cost":"0.00","id":174,"servise":"Foody","serviseImg":"bg-kw","number":"Numbers: 0","value":"kw"},{"cost":"0.00","id":175,"servise":"Grab","serviseImg":"bg-jg","number":"Numbers: 0","value":"jg"},{"cost":"0.05","id":176,"servise":"Zalo","serviseImg":"bg-mj","number":"Numbers: 28606","value":"mj"},{"cost":"0.00","id":177,"servise":"LiveScore","serviseImg":"bg-eu","number":"Numbers: 0","value":"eu"},{"cost":"0.00","id":178,"servise":"888casino","serviseImg":"bg-ll","number":"Numbers: 0","value":"ll"},{"cost":"0.00","id":179,"servise":"Gamer","serviseImg":"bg-ed","number":"Numbers: 0","value":"ed"},{"cost":"0.00","id":180,"servise":"Huya","serviseImg":"bg-pp","number":"Numbers: 0","value":"pp"},{"cost":"0.00","id":181,"servise":"WestStein","serviseImg":"bg-th","number":"Numbers: 0","value":"th"},{"cost":"0.04","id":182,"servise":"Tango","serviseImg":"bg-xr","number":"Numbers: 27765","value":"xr"},{"cost":"0.00","id":183,"servise":"Global24","serviseImg":"bg-iz","number":"Numbers: 0","value":"iz"},{"cost":"0.03","id":184,"servise":"\u041c\u0412\u0438\u0434\u0435\u043e","serviseImg":"bg-tk","number":"Numbers: 27660","value":"tk"},{"cost":"0.00","id":185,"servise":"Sheerid","serviseImg":"bg-rx","number":"Numbers: 0","value":"rx"},{"cost":"0.00","id":186,"servise":"99app","serviseImg":"bg-ki","number":"Numbers: 0","value":"ki"},{"cost":"0.00","id":187,"servise":"CAIXA","serviseImg":"bg-my","number":"Numbers: 0","value":"my"},{"cost":"0.00","id":188,"servise":"OfferUp","serviseImg":"bg-zm","number":"Numbers: 0","value":"zm"},{"cost":"0.00","id":189,"servise":"Swvl","serviseImg":"bg-tq","number":"Numbers: 0","value":"tq"},{"cost":"0.00","id":190,"servise":"Haraj","serviseImg":"bg-au","number":"Numbers: 0","value":"au"},{"cost":"0.00","id":191,"servise":"Taksheel","serviseImg":"bg-ei","number":"Numbers: 0","value":"ei"},{"cost":"0.00","id":192,"servise":"hamrahaval","serviseImg":"bg-rp","number":"Numbers: 0","value":"rp"},{"cost":"0.00","id":193,"servise":"Gamekit","serviseImg":"bg-pa","number":"Numbers: 0","value":"pa"},{"cost":"0.00","id":194,"servise":" \u015eikayet var","serviseImg":"bg-fs","number":"Numbers: 0","value":"fs"},{"cost":"0.00","id":195,"servise":"Getir","serviseImg":"bg-ul","number":"Numbers: 0","value":"ul"},{"cost":"0.00","id":196,"servise":"irancell","serviseImg":"bg-cf","number":"Numbers: 0","value":"cf"},{"cost":"0.00","id":197,"servise":"Alfa","serviseImg":"bg-bt","number":"Numbers: 0","value":"bt"},{"cost":"0.00","id":198,"servise":"Disney Hotstar","serviseImg":"bg-ud","number":"Numbers: 0","value":"ud"},{"cost":"0.00","id":199,"servise":"Agroinform","serviseImg":"bg-qu","number":"Numbers: 0","value":"qu"},{"cost":"0.00","id":200,"servise":"humblebundle","serviseImg":"bg-un","number":"Numbers: 0","value":"un"},{"cost":"0.00","id":201,"servise":"Faberlic","serviseImg":"bg-rm","number":"Numbers: 0","value":"rm"},{"cost":"0.00","id":202,"servise":"CafeBazaar","serviseImg":"bg-uo","number":"Numbers: 0","value":"uo"},{"cost":"0.00","id":203,"servise":"cryptocom","serviseImg":"bg-ti","number":"Numbers: 0","value":"ti"},{"cost":"0.00","id":204,"servise":"Gittigidiyor","serviseImg":"bg-nk","number":"Numbers: 0","value":"nk"},{"cost":"0.00","id":205,"servise":"mzadqatar","serviseImg":"bg-jm","number":"Numbers: 0","value":"jm"},{"cost":"0.00","id":206,"servise":"Algida","serviseImg":"bg-lp","number":"Numbers: 0","value":"lp"},{"cost":"0.00","id":207,"servise":"Cita Previa","serviseImg":"bg-si","number":"Numbers: 0","value":"si"},{"cost":"0.00","id":208,"servise":"Potato Chat","serviseImg":"bg-fj","number":"Numbers: 0","value":"fj"},{"cost":"0.00","id":209,"servise":"Bitaqaty","serviseImg":"bg-pt","number":"Numbers: 0","value":"pt"},{"cost":"0.00","id":210,"servise":"Primaries 2020","serviseImg":"bg-qc","number":"Numbers: 0","value":"qc"},{"cost":"0.00","id":211,"servise":"Amasia","serviseImg":"bg-yo","number":"Numbers: 0","value":"yo"},{"cost":"0.00","id":212,"servise":"Dream11","serviseImg":"bg-ve","number":"Numbers: 0","value":"ve"},{"cost":"0.00","id":213,"servise":"Oriflame","serviseImg":"bg-qh","number":"Numbers: 0","value":"qh"},{"cost":"0.00","id":214,"servise":"Bykea","serviseImg":"bg-iu","number":"Numbers: 0","value":"iu"},{"cost":"0.00","id":215,"servise":"Immowelt","serviseImg":"bg-ib","number":"Numbers: 0","value":"ib"},{"cost":"0.00","id":216,"servise":"Digikala","serviseImg":"bg-zv","number":"Numbers: 0","value":"zv"},{"cost":"0.00","id":217,"servise":"Wing Money","serviseImg":"bg-jb","number":"Numbers: 0","value":"jb"},{"cost":"0.00","id":218,"servise":"Yaay","serviseImg":"bg-vn","number":"Numbers: 0","value":"vn"},{"cost":"0.00","id":219,"servise":"GameArena","serviseImg":"bg-wn","number":"Numbers: 0","value":"wn"},{"cost":"0.04","id":220,"servise":"Vita express","serviseImg":"bg-bj","number":"Numbers: 27861","value":"bj"},{"cost":"0.00","id":221,"servise":"Auchan","serviseImg":"bg-st","number":"Numbers: 0","value":"st"},{"cost":"0.00","id":222,"servise":"Picpay","serviseImg":"bg-ev","number":"Numbers: 0","value":"ev"},{"cost":"0.00","id":223,"servise":"Blued","serviseImg":"bg-qn","number":"Numbers: 0","value":"qn"},{"cost":"0.05","id":224,"servise":"Not on the list","serviseImg":"bg-ot","number":"Numbers: 19352","value":"ot"}]
The problem is that after my knowledge this is a wrong formatted json file, even if I remove "[" and "]".
I though of just looking at it as a text file to get a specific value but I was unable to find something on the internet about this topic.
I want to get the following value:
From:
{"cost":"0.00","id":123,"servise":"Nike","serviseImg":"bg-ew","number":"Numbers: 0","value":"ew"}
I want to get:
Numbers: 0
Use json.loads to become a dictionary query:
import requests
import json
response = requests.get('https://sms-service-online.com/api/getServicesAndCost/?country=0&operator=any&lang=en')
data = response.json()
plain = data["data"]
for d in json.loads(plain):
if d['id'] == 123:
print(d)
You have a list of dict in your first example. So first you need to select which dict you want. For instance, if your query is called 'json_list'
json_list[2]
will get you the third item in that list.
For what you are asking, try:
j = {"cost":"0.00","id":123,"servise":"Nike","serviseImg":"bg-ew","number":"Numbers: 0","value":"ew"}
j["number"].split()[-1]
Assuming you want to check all numbers in all dict, try:
json_list=[{"cost":"0.45","id":0,"servise":"VK.com","serviseImg":"bg-vk","number":"Numbers: 3047","value":"vk"},{"cost":"0.07","id":1,"servise":"OK.ru","serviseImg":"bg-ok","number":"Numbers: 14397","value":"ok"},{"cost":"0.15","id":2,"servise":"Whatsapp","serviseImg":"bg-wa","number":"Numbers: 17610","value":"wa"},{"cost":"0.18","id":3,"servise":"Viber","serviseImg":"bg-vi","number":"Numbers: 413","value":"vi"},{"cost":"0.00","id":4,"servise":"Telegram","serviseImg":"bg-tg","number":"Numbers: 0","value":"tg"},{"cost":"0.30","id":5,"servise":"WeChat","serviseImg":"bg-wb","number":"Numbers: 28389","value":"wb"},{"cost":"0.15","id":6,"servise":"Google,youtube,Gmail","serviseImg":"bg-go","number":"Numbers: 15419","value":"go"},{"cost":"0.11","id":7,"servise":"avito","serviseImg":"bg-av","number":"Numbers: 17379","value":"av"},{"cost":"0.07","id":8,"servise":"facebook","serviseImg":"bg-fb","number":"Numbers: 21636","value":"fb"},{"cost":"0.03","id":9,"servise":"Twitter","serviseImg":"bg-tw","number":"Numbers: 26864","value":"tw"},{"cost":"0.05","id":10,"servise":"Uber","serviseImg":"bg-ub","number":"Numbers: 20975","value":"ub"},{"cost":"0.22","id":11,"servise":"Qiwi","serviseImg":"bg-qw","number":"Numbers: 20371","value":"qw"},{"cost":"0.02","id":12,"servise":"Gett","serviseImg":"bg-gt","number":"Numbers: 28501","value":"gt"},{"cost":"0.00","id":13,"servise":"OLX","serviseImg":"bg-sn","number":"Numbers: 0","value":"sn"},{"cost":"0.14","id":14,"servise":"Instagram","serviseImg":"bg-ig","number":"Numbers: 3799","value":"ig"},{"cost":"0.00","id":15,"servise":"Hezzl","serviseImg":"bg-ss","number":"Numbers: 0","value":"ss"},{"cost":"0.07","id":16,"servise":"\u042e\u043b\u0430","serviseImg":"bg-ym","number":"Numbers: 17597","value":"ym"},{"cost":"0.03","id":17,"servise":"Mail.ru","serviseImg":"bg-ma","number":"Numbers: 17936","value":"ma"},{"cost":"0.03","id":18,"servise":"Microsoft","serviseImg":"bg-mm","number":"Numbers: 3830","value":"mm"},{"cost":"0.03","id":19,"servise":"Airbnb","serviseImg":"bg-uk","number":"Numbers: 28266","value":"uk"},{"cost":"0.00","id":20,"servise":"Line messenger","serviseImg":"bg-me","number":"Numbers: 0","value":"me"},{"cost":"0.03","id":21,"servise":"Yahoo","serviseImg":"bg-mb","number":"Numbers: 19077","value":"mb"},{"cost":"0.00","id":22,"servise":"Drugvokrug.ru","serviseImg":"bg-we","number":"Numbers: 0","value":"we"},{"cost":"0.05","id":23,"servise":"5ka.ru","serviseImg":"bg-bd","number":"Numbers: 27541","value":"bd"},{"cost":"0.00","id":24,"servise":"HQ Trivia","serviseImg":"bg-kp","number":"Numbers: 0","value":"kp"},{"cost":"0.65","id":25,"servise":"Delivery Club","serviseImg":"bg-dt","number":"Numbers: 26812","value":"dt"},{"cost":"0.03","id":26,"servise":"Yandex","serviseImg":"bg-ya","number":"Numbers: 20944","value":"ya"},{"cost":"0.05","id":27,"servise":"Steam","serviseImg":"bg-mt","number":"Numbers: 28121","value":"mt"},{"cost":"0.04","id":28,"servise":"Tinder","serviseImg":"bg-oi","number":"Numbers: 27478","value":"oi"},{"cost":"0.02","id":29,"servise":"Mamba, MeetMe","serviseImg":"bg-fd","number":"Numbers: 25328","value":"fd"},{"cost":"0.00","id":30,"servise":"Dent","serviseImg":"bg-zz","number":"Numbers: 0","value":"zz"},{"cost":"0.07","id":31,"servise":"KakaoTalk","serviseImg":"bg-kt","number":"Numbers: 27823","value":"kt"},{"cost":"0.04","id":32,"servise":"AOL","serviseImg":"bg-pm","number":"Numbers: 23369","value":"pm"},{"cost":"0.02","id":33,"servise":"LinkedIN","serviseImg":"bg-tn","number":"Numbers: 32192","value":"tn"},{"cost":"0.03","id":34,"servise":"Tencent QQ","serviseImg":"bg-qq","number":"Numbers: 27883","value":"qq"},{"cost":"0.06","id":35,"servise":"Magnit","serviseImg":"bg-mg","number":"Numbers: 993","value":"mg"},{"cost":"0.00","id":36,"servise":"pof.com","serviseImg":"bg-pf","number":"Numbers: 0","value":"pf"},{"cost":"0.03","id":37,"servise":"Yalla","serviseImg":"bg-yl","number":"Numbers: 27822","value":"yl"},{"cost":"0.00","id":38,"servise":"kolesa.kz","serviseImg":"bg-kl","number":"Numbers: 0","value":"kl"},{"cost":"0.03","id":39,"servise":"premium.one","serviseImg":"bg-po","number":"Numbers: 25869","value":"po"},{"cost":"0.07","id":40,"servise":"Naver","serviseImg":"bg-nv","number":"Numbers: 27582","value":"nv"},{"cost":"0.03","id":41,"servise":"Netflix","serviseImg":"bg-nf","number":"Numbers: 27715","value":"nf"},{"cost":"0.00","id":42,"servise":"icq","serviseImg":"bg-iq","number":"Numbers: 0","value":"iq"},{"cost":"0.00","id":43,"servise":"Onlinerby","serviseImg":"bg-ob","number":"Numbers: 0","value":"ob"},{"cost":"0.00","id":44,"servise":"kufarby","serviseImg":"bg-kb","number":"Numbers: 0","value":"kb"},{"cost":"0.03","id":45,"servise":"Imo","serviseImg":"bg-im","number":"Numbers: 25198","value":"im"},{"cost":"0.00","id":46,"servise":"Michat","serviseImg":"bg-mc","number":"Numbers: 0","value":"mc"},{"cost":"0.03","id":47,"servise":"Discord","serviseImg":"bg-ds","number":"Numbers: 22011","value":"ds"},{"cost":"0.00","id":48,"servise":"Seosprint","serviseImg":"bg-vv","number":"Numbers: 0","value":"vv"},{"cost":"0.00","id":49,"servise":"Monobank","serviseImg":"bg-ji","number":"Numbers: 0","value":"ji"},{"cost":"0.03","id":50,"servise":"TikTok\/Douyin","serviseImg":"bg-lf","number":"Numbers: 26299","value":"lf"},{"cost":"0.00","id":51,"servise":"Ukrnet","serviseImg":"bg-hu","number":"Numbers: 0","value":"hu"},{"cost":"0.00","id":52,"servise":"Skout","serviseImg":"bg-wg","number":"Numbers: 0","value":"wg"},{"cost":"0.00","id":53,"servise":"EasyPay","serviseImg":"bg-rz","number":"Numbers: 0","value":"rz"},{"cost":"0.00","id":54,"servise":"Q12 Trivia","serviseImg":"bg-vf","number":"Numbers: 0","value":"vf"},{"cost":"0.00","id":55,"servise":"Pyro Music","serviseImg":"bg-ny","number":"Numbers: 0","value":"ny"},{"cost":"0.00","id":56,"servise":"Wolt","serviseImg":"bg-rr","number":"Numbers: 0","value":"rr"},{"cost":"0.00","id":57,"servise":"CliQQ","serviseImg":"bg-fe","number":"Numbers: 0","value":"fe"},{"cost":"0.00","id":58,"servise":"ssoidnet","serviseImg":"bg-la","number":"Numbers: 0","value":"la"},{"cost":"0.00","id":59,"servise":"Zoho","serviseImg":"bg-zh","number":"Numbers: 0","value":"zh"},{"cost":"0.00","id":60,"servise":"Ticketmaster","serviseImg":"bg-gp","number":"Numbers: 0","value":"gp"},{"cost":"0.05","id":61,"servise":"Amazon","serviseImg":"bg-am","number":"Numbers: 25313","value":"am"},{"cost":"0.00","id":62,"servise":"Olacabs","serviseImg":"bg-ly","number":"Numbers: 0","value":"ly"},{"cost":"0.00","id":63,"servise":"Rambler","serviseImg":"bg-tc","number":"Numbers: 0","value":"tc"},{"cost":"0.02","id":64,"servise":"ProtonMail","serviseImg":"bg-dp","number":"Numbers: 30668","value":"dp"},{"cost":"0.00","id":65,"servise":"NRJ Music Awards","serviseImg":"bg-pg","number":"Numbers: 0","value":"pg"},{"cost":"0.03","id":66,"servise":"Citymobil","serviseImg":"bg-yf","number":"Numbers: 26997","value":"yf"},{"cost":"0.00","id":67,"servise":"MIRATORG","serviseImg":"bg-op","number":"Numbers: 0","value":"op"},{"cost":"0.03","id":68,"servise":"PGbonus","serviseImg":"bg-fx","number":"Numbers: 27563","value":"fx"},{"cost":"0.03","id":69,"servise":"MEGA","serviseImg":"bg-qr","number":"Numbers: 27848","value":"qr"},{"cost":"0.03","id":70,"servise":"SportMaster","serviseImg":"bg-yk","number":"Numbers: 26584","value":"yk"},{"cost":"0.03","id":71,"servise":"Careem","serviseImg":"bg-ls","number":"Numbers: 27873","value":"ls"},{"cost":"0.03","id":72,"servise":"BIGO LIVE","serviseImg":"bg-bl","number":"Numbers: 25421","value":"bl"},{"cost":"0.03","id":73,"servise":"MyMusicTaste","serviseImg":"bg-mu","number":"Numbers: 27898","value":"mu"},{"cost":"0.03","id":74,"servise":"Snapchat","serviseImg":"bg-fu","number":"Numbers: 27758","value":"fu"},{"cost":"0.00","id":75,"servise":"Keybase","serviseImg":"bg-bf","number":"Numbers: 0","value":"bf"},{"cost":"0.03","id":76,"servise":"OZON","serviseImg":"bg-sg","number":"Numbers: 26595","value":"sg"},{"cost":"0.03","id":77,"servise":"Wildberries","serviseImg":"bg-uu","number":"Numbers: 27220","value":"uu"},{"cost":"0.05","id":78,"servise":"BlaBlaCar","serviseImg":"bg-ua","number":"Numbers: 24367","value":"ua"},{"cost":"0.09","id":79,"servise":"Alibaba","serviseImg":"bg-ab","number":"Numbers: 17818","value":"ab"},{"cost":"0.00","id":80,"servise":"Inboxlv","serviseImg":"bg-iv","number":"Numbers: 0","value":"iv"},{"cost":"0.00","id":81,"servise":"Nttgame","serviseImg":"bg-zy","number":"Numbers: 0","value":"zy"},{"cost":"0.00","id":82,"servise":"Surveytime","serviseImg":"bg-gd","number":"Numbers: 0","value":"gd"},{"cost":"0.00","id":83,"servise":"Mylove","serviseImg":"bg-fy","number":"Numbers: 0","value":"fy"},{"cost":"0.02","id":84,"servise":"mosru","serviseImg":"bg-ce","number":"Numbers: 27173","value":"ce"},{"cost":"0.00","id":85,"servise":"Truecaller","serviseImg":"bg-tl","number":"Numbers: 0","value":"tl"},{"cost":"0.00","id":86,"servise":"Globus","serviseImg":"bg-hm","number":"Numbers: 0","value":"hm"},{"cost":"0.03","id":87,"servise":"Bolt","serviseImg":"bg-tx","number":"Numbers: 27378","value":"tx"},{"cost":"0.00","id":88,"servise":"Shopee","serviseImg":"bg-ka","number":"Numbers: 0","value":"ka"},{"cost":"0.03","id":89,"servise":"Perekrestok.ru","serviseImg":"bg-pl","number":"Numbers: 27883","value":"pl"},{"cost":"0.03","id":90,"servise":"Burger King","serviseImg":"bg-ip","number":"Numbers: 27764","value":"ip"},{"cost":"0.00","id":91,"servise":"Prom","serviseImg":"bg-cm","number":"Numbers: 0","value":"cm"},{"cost":"0.03","id":92,"servise":"AliPay","serviseImg":"bg-hw","number":"Numbers: 27166","value":"hw"},{"cost":"0.00","id":93,"servise":"Karusel","serviseImg":"bg-de","number":"Numbers: 0","value":"de"},{"cost":"0.00","id":94,"servise":"IVI","serviseImg":"bg-jc","number":"Numbers: 0","value":"jc"},{"cost":"0.03","id":95,"servise":"inDriver","serviseImg":"bg-rl","number":"Numbers: 27534","value":"rl"},{"cost":"0.03","id":96,"servise":"Happn","serviseImg":"bg-df","number":"Numbers: 27785","value":"df"},{"cost":"0.00","id":97,"servise":"RuTube","serviseImg":"bg-ui","number":"Numbers: 0","value":"ui"},{"cost":"0.03","id":98,"servise":"Magnolia","serviseImg":"bg-up","number":"Numbers: 27884","value":"up"},{"cost":"0.03","id":99,"servise":"Foodpanda","serviseImg":"bg-nz","number":"Numbers: 27493","value":"nz"},{"cost":"0.00","id":100,"servise":"Weibo","serviseImg":"bg-kf","number":"Numbers: 0","value":"kf"},{"cost":"0.00","id":101,"servise":"BillMill","serviseImg":"bg-ri","number":"Numbers: 0","value":"ri"},{"cost":"0.00","id":102,"servise":"Quipp","serviseImg":"bg-cc","number":"Numbers: 0","value":"cc"},{"cost":"0.00","id":103,"servise":"Okta","serviseImg":"bg-lr","number":"Numbers: 0","value":"lr"},{"cost":"0.03","id":104,"servise":"JDcom","serviseImg":"bg-za","number":"Numbers: 27891","value":"za"},{"cost":"0.05","id":105,"servise":"MTS CashBack","serviseImg":"bg-da","number":"Numbers: 12860","value":"da"},{"cost":"0.00","id":106,"servise":"Fiqsy","serviseImg":"bg-ug","number":"Numbers: 0","value":"ug"},{"cost":"0.00","id":107,"servise":"KuCoinPlay","serviseImg":"bg-sq","number":"Numbers: 0","value":"sq"},{"cost":"0.00","id":108,"servise":"Papara","serviseImg":"bg-zr","number":"Numbers: 0","value":"zr"},{"cost":"0.00","id":109,"servise":"Wish","serviseImg":"bg-xv","number":"Numbers: 0","value":"xv"},{"cost":"0.00","id":110,"servise":"Icrypex","serviseImg":"bg-cx","number":"Numbers: 0","value":"cx"},{"cost":"0.00","id":111,"servise":"PaddyPower","serviseImg":"bg-cw","number":"Numbers: 0","value":"cw"},{"cost":"0.05","id":112,"servise":"Baidu","serviseImg":"bg-li","number":"Numbers: 27813","value":"li"},{"cost":"0.00","id":113,"servise":"Dominos Pizza","serviseImg":"bg-dz","number":"Numbers: 0","value":"dz"},{"cost":"0.00","id":114,"servise":"paycell","serviseImg":"bg-xz","number":"Numbers: 0","value":"xz"},{"cost":"0.03","id":115,"servise":"Lenta","serviseImg":"bg-rd","number":"Numbers: 27651","value":"rd"},{"cost":"0.00","id":116,"servise":"Payberry","serviseImg":"bg-qb","number":"Numbers: 0","value":"qb"},{"cost":"0.03","id":117,"servise":"Drom","serviseImg":"bg-hz","number":"Numbers: 27673","value":"hz"},{"cost":"0.00","id":118,"servise":"GlobalTel","serviseImg":"bg-gl","number":"Numbers: 0","value":"gl"},{"cost":"0.00","id":119,"servise":"Deliveroo","serviseImg":"bg-zk","number":"Numbers: 0","value":"zk"},{"cost":"0.00","id":120,"servise":"Socios","serviseImg":"bg-ia","number":"Numbers: 0","value":"ia"},{"cost":"0.00","id":121,"servise":"Wmaraci","serviseImg":"bg-xl","number":"Numbers: 0","value":"xl"},{"cost":"0.00","id":122,"servise":"Yemeksepeti","serviseImg":"bg-yi","number":"Numbers: 0","value":"yi"},{"cost":"0.00","id":123,"servise":"Nike","serviseImg":"bg-ew","number":"Numbers: 0","value":"ew"},{"cost":"0.02","id":124,"servise":"myGLO","serviseImg":"bg-ae","number":"Numbers: 31671","value":"ae"},{"cost":"0.02","id":125,"servise":"YouStar","serviseImg":"bg-gb","number":"Numbers: 31133","value":"gb"},{"cost":"0.15","id":126,"servise":"\u0420\u0421\u0410","serviseImg":"bg-cy","number":"Numbers: 25178","value":"cy"},{"cost":"0.00","id":127,"servise":"RosaKhutor","serviseImg":"bg-qm","number":"Numbers: 0","value":"qm"},{"cost":"0.00","id":128,"servise":"eBay","serviseImg":"bg-dh","number":"Numbers: 0","value":"dh"},{"cost":"0.00","id":129,"servise":"Pay.kvartplata.ru+","serviseImg":"bg-yb","number":"Numbers: 0","value":"yb"},{"cost":"0.00","id":130,"servise":"GG","serviseImg":"bg-qe","number":"Numbers: 0","value":"qe"},{"cost":"0.03","id":131,"servise":"Grindr","serviseImg":"bg-yw","number":"Numbers: 4841","value":"yw"},{"cost":"0.00","id":132,"servise":"OffGamers","serviseImg":"bg-uz","number":"Numbers: 0","value":"uz"},{"cost":"0.00","id":133,"servise":"Hepsiburadacom","serviseImg":"bg-gx","number":"Numbers: 0","value":"gx"},{"cost":"0.00","id":134,"servise":"Coinbase","serviseImg":"bg-re","number":"Numbers: 0","value":"re"},{"cost":"0.00","id":135,"servise":"RADA NABU","serviseImg":"bg-tj","number":"Numbers: 0","value":"tj"},{"cost":"0.09","id":136,"servise":"PayPal","serviseImg":"bg-ts","number":"Numbers: 27144","value":"ts"},{"cost":"0.00","id":137,"servise":"hily","serviseImg":"bg-rt","number":"Numbers: 0","value":"rt"},{"cost":"0.00","id":138,"servise":"SneakersnStuff","serviseImg":"bg-sf","number":"Numbers: 0","value":"sf"},{"cost":"0.00","id":139,"servise":"Dostavista","serviseImg":"bg-sv","number":"Numbers: 0","value":"sv"},{"cost":"0.00","id":140,"servise":"32red","serviseImg":"bg-qi","number":"Numbers: 0","value":"qi"},{"cost":"0.02","id":141,"servise":"Blizzard","serviseImg":"bg-bz","number":"Numbers: 27797","value":"bz"},{"cost":"0.00","id":142,"servise":"ezbuy","serviseImg":"bg-db","number":"Numbers: 0","value":"db"},{"cost":"0.00","id":143,"servise":"CoinField","serviseImg":"bg-vw","number":"Numbers: 0","value":"vw"},{"cost":"0.00","id":144,"servise":"Airtel","serviseImg":"bg-zl","number":"Numbers: 0","value":"zl"},{"cost":"0.00","id":145,"servise":"Airtel","serviseImg":"bg-wf","number":"Numbers: 0","value":"wf"},{"cost":"0.00","id":146,"servise":"MrGreen","serviseImg":"bg-lw","number":"Numbers: 0","value":"lw"},{"cost":"0.00","id":147,"servise":"Rediffmail","serviseImg":"bg-co","number":"Numbers: 0","value":"co"},{"cost":"0.00","id":148,"servise":"miloan","serviseImg":"bg-ey","number":"Numbers: 0","value":"ey"},{"cost":"0.00","id":149,"servise":"Paytm","serviseImg":"bg-ge","number":"Numbers: 0","value":"ge"},{"cost":"0.00","id":150,"servise":"Dhani","serviseImg":"bg-os","number":"Numbers: 0","value":"os"},{"cost":"0.00","id":151,"servise":"CMTcuzdan","serviseImg":"bg-ql","number":"Numbers: 0","value":"ql"},{"cost":"0.00","id":152,"servise":"Mercado","serviseImg":"bg-cq","number":"Numbers: 0","value":"cq"},{"cost":"0.05","id":153,"servise":"DiDi","serviseImg":"bg-xk","number":"Numbers: 26447","value":"xk"},{"cost":"0.00","id":154,"servise":"Monese","serviseImg":"bg-py","number":"Numbers: 0","value":"py"},{"cost":"0.00","id":155,"servise":"Kotak811","serviseImg":"bg-rv","number":"Numbers: 0","value":"rv"},{"cost":"0.00","id":156,"servise":"Hopi","serviseImg":"bg-jl","number":"Numbers: 0","value":"jl"},{"cost":"0.00","id":157,"servise":"Trendyol","serviseImg":"bg-pr","number":"Numbers: 0","value":"pr"},{"cost":"0.00","id":158,"servise":"Justdating","serviseImg":"bg-pu","number":"Numbers: 0","value":"pu"},{"cost":"0.00","id":159,"servise":"Pairs","serviseImg":"bg-dk","number":"Numbers: 0","value":"dk"},{"cost":"0.00","id":160,"servise":"Touchance","serviseImg":"bg-fm","number":"Numbers: 0","value":"fm"},{"cost":"0.00","id":161,"servise":"SnappFood","serviseImg":"bg-ph","number":"Numbers: 0","value":"ph"},{"cost":"0.00","id":162,"servise":"NCsoft","serviseImg":"bg-sw","number":"Numbers: 0","value":"sw"},{"cost":"0.00","id":163,"servise":"Tosla","serviseImg":"bg-nr","number":"Numbers: 0","value":"nr"},{"cost":"0.00","id":164,"servise":"Ininal","serviseImg":"bg-hy","number":"Numbers: 0","value":"hy"},{"cost":"0.00","id":165,"servise":"Paysend","serviseImg":"bg-tr","number":"Numbers: 0","value":"tr"},{"cost":"0.00","id":166,"servise":"CDkeys","serviseImg":"bg-pq","number":"Numbers: 0","value":"pq"},{"cost":"0.00","id":167,"servise":"AVON","serviseImg":"bg-ff","number":"Numbers: 0","value":"ff"},{"cost":"0.03","id":168,"servise":"dodopizza","serviseImg":"bg-sd","number":"Numbers: 27739","value":"sd"},{"cost":"0.24","id":169,"servise":"McDonalds","serviseImg":"bg-ry","number":"Numbers: 7729","value":"ry"},{"cost":"0.00","id":170,"servise":"E bike Gewinnspiel","serviseImg":"bg-le","number":"Numbers: 0","value":"le"},{"cost":"0.00","id":171,"servise":"JKF","serviseImg":"bg-hr","number":"Numbers: 0","value":"hr"},{"cost":"0.00","id":172,"servise":"MyFishka","serviseImg":"bg-qa","number":"Numbers: 0","value":"qa"},{"cost":"0.00","id":173,"servise":"Craigslist","serviseImg":"bg-wc","number":"Numbers: 0","value":"wc"},{"cost":"0.00","id":174,"servise":"Foody","serviseImg":"bg-kw","number":"Numbers: 0","value":"kw"},{"cost":"0.00","id":175,"servise":"Grab","serviseImg":"bg-jg","number":"Numbers: 0","value":"jg"},{"cost":"0.05","id":176,"servise":"Zalo","serviseImg":"bg-mj","number":"Numbers: 28606","value":"mj"},{"cost":"0.00","id":177,"servise":"LiveScore","serviseImg":"bg-eu","number":"Numbers: 0","value":"eu"},{"cost":"0.00","id":178,"servise":"888casino","serviseImg":"bg-ll","number":"Numbers: 0","value":"ll"},{"cost":"0.00","id":179,"servise":"Gamer","serviseImg":"bg-ed","number":"Numbers: 0","value":"ed"},{"cost":"0.00","id":180,"servise":"Huya","serviseImg":"bg-pp","number":"Numbers: 0","value":"pp"},{"cost":"0.00","id":181,"servise":"WestStein","serviseImg":"bg-th","number":"Numbers: 0","value":"th"},{"cost":"0.04","id":182,"servise":"Tango","serviseImg":"bg-xr","number":"Numbers: 27765","value":"xr"},{"cost":"0.00","id":183,"servise":"Global24","serviseImg":"bg-iz","number":"Numbers: 0","value":"iz"},{"cost":"0.03","id":184,"servise":"\u041c\u0412\u0438\u0434\u0435\u043e","serviseImg":"bg-tk","number":"Numbers: 27660","value":"tk"},{"cost":"0.00","id":185,"servise":"Sheerid","serviseImg":"bg-rx","number":"Numbers: 0","value":"rx"},{"cost":"0.00","id":186,"servise":"99app","serviseImg":"bg-ki","number":"Numbers: 0","value":"ki"},{"cost":"0.00","id":187,"servise":"CAIXA","serviseImg":"bg-my","number":"Numbers: 0","value":"my"},{"cost":"0.00","id":188,"servise":"OfferUp","serviseImg":"bg-zm","number":"Numbers: 0","value":"zm"},{"cost":"0.00","id":189,"servise":"Swvl","serviseImg":"bg-tq","number":"Numbers: 0","value":"tq"},{"cost":"0.00","id":190,"servise":"Haraj","serviseImg":"bg-au","number":"Numbers: 0","value":"au"},{"cost":"0.00","id":191,"servise":"Taksheel","serviseImg":"bg-ei","number":"Numbers: 0","value":"ei"},{"cost":"0.00","id":192,"servise":"hamrahaval","serviseImg":"bg-rp","number":"Numbers: 0","value":"rp"},{"cost":"0.00","id":193,"servise":"Gamekit","serviseImg":"bg-pa","number":"Numbers: 0","value":"pa"},{"cost":"0.00","id":194,"servise":" \u015eikayet var","serviseImg":"bg-fs","number":"Numbers: 0","value":"fs"},{"cost":"0.00","id":195,"servise":"Getir","serviseImg":"bg-ul","number":"Numbers: 0","value":"ul"},{"cost":"0.00","id":196,"servise":"irancell","serviseImg":"bg-cf","number":"Numbers: 0","value":"cf"},{"cost":"0.00","id":197,"servise":"Alfa","serviseImg":"bg-bt","number":"Numbers: 0","value":"bt"},{"cost":"0.00","id":198,"servise":"Disney Hotstar","serviseImg":"bg-ud","number":"Numbers: 0","value":"ud"},{"cost":"0.00","id":199,"servise":"Agroinform","serviseImg":"bg-qu","number":"Numbers: 0","value":"qu"},{"cost":"0.00","id":200,"servise":"humblebundle","serviseImg":"bg-un","number":"Numbers: 0","value":"un"},{"cost":"0.00","id":201,"servise":"Faberlic","serviseImg":"bg-rm","number":"Numbers: 0","value":"rm"},{"cost":"0.00","id":202,"servise":"CafeBazaar","serviseImg":"bg-uo","number":"Numbers: 0","value":"uo"},{"cost":"0.00","id":203,"servise":"cryptocom","serviseImg":"bg-ti","number":"Numbers: 0","value":"ti"},{"cost":"0.00","id":204,"servise":"Gittigidiyor","serviseImg":"bg-nk","number":"Numbers: 0","value":"nk"},{"cost":"0.00","id":205,"servise":"mzadqatar","serviseImg":"bg-jm","number":"Numbers: 0","value":"jm"},{"cost":"0.00","id":206,"servise":"Algida","serviseImg":"bg-lp","number":"Numbers: 0","value":"lp"},{"cost":"0.00","id":207,"servise":"Cita Previa","serviseImg":"bg-si","number":"Numbers: 0","value":"si"},{"cost":"0.00","id":208,"servise":"Potato Chat","serviseImg":"bg-fj","number":"Numbers: 0","value":"fj"},{"cost":"0.00","id":209,"servise":"Bitaqaty","serviseImg":"bg-pt","number":"Numbers: 0","value":"pt"},{"cost":"0.00","id":210,"servise":"Primaries 2020","serviseImg":"bg-qc","number":"Numbers: 0","value":"qc"},{"cost":"0.00","id":211,"servise":"Amasia","serviseImg":"bg-yo","number":"Numbers: 0","value":"yo"},{"cost":"0.00","id":212,"servise":"Dream11","serviseImg":"bg-ve","number":"Numbers: 0","value":"ve"},{"cost":"0.00","id":213,"servise":"Oriflame","serviseImg":"bg-qh","number":"Numbers: 0","value":"qh"},{"cost":"0.00","id":214,"servise":"Bykea","serviseImg":"bg-iu","number":"Numbers: 0","value":"iu"},{"cost":"0.00","id":215,"servise":"Immowelt","serviseImg":"bg-ib","number":"Numbers: 0","value":"ib"},{"cost":"0.00","id":216,"servise":"Digikala","serviseImg":"bg-zv","number":"Numbers: 0","value":"zv"},{"cost":"0.00","id":217,"servise":"Wing Money","serviseImg":"bg-jb","number":"Numbers: 0","value":"jb"},{"cost":"0.00","id":218,"servise":"Yaay","serviseImg":"bg-vn","number":"Numbers: 0","value":"vn"},{"cost":"0.00","id":219,"servise":"GameArena","serviseImg":"bg-wn","number":"Numbers: 0","value":"wn"},{"cost":"0.04","id":220,"servise":"Vita express","serviseImg":"bg-bj","number":"Numbers: 27861","value":"bj"},{"cost":"0.00","id":221,"servise":"Auchan","serviseImg":"bg-st","number":"Numbers: 0","value":"st"},{"cost":"0.00","id":222,"servise":"Picpay","serviseImg":"bg-ev","number":"Numbers: 0","value":"ev"},{"cost":"0.00","id":223,"servise":"Blued","serviseImg":"bg-qn","number":"Numbers: 0","value":"qn"},{"cost":"0.05","id":224,"servise":"Not on the list","serviseImg":"bg-ot","number":"Numbers: 19352","value":"ot"}]
for j in json_list:
n = i['number'].split()[-1]
print(n)
# do something interesting with n

Output not displaying full list of elements appended

from csv import reader
def func(sku_list):
values = []
with open(sku_list, 'r', encoding = 'utf-8') as pr:
rows = reader(pr)
for sku in rows:
values.append(sku[1])
return(values)
if __name__ == '__main__':
dir_path = "C:/Users/XXXX/Downloads/"
vendors = dir_path + 'file.csv'
new_prices = func(vendors)
print(new_prices)
sku_list is a csv file filled with pairs of brand names and their skus that I have downloaded from my db, for some reason as it iters through the rows and grabs just the sku value, hence sku[1], it stops well short of the actual length I expect the list to be
sku_list is 85,892 tuples long but when I print out the values appended to the list values it simply returns this:
['SKU', 'MWGB4896', 'MWGB4872', 'MWGB4848', 'MWGB3648', 'WGB4896', 'WGB4872', 'WGB4848', 'WGB3648', 'WGB2436', 'WGB1824', 'BKGB4896NT', 'BKGB4872NT', 'BKGB4848NT', 'BKGB3648NT', 'BKGB2436NT', 'BKGB1824NT', 'WFC2418G', 'WFC2418', 'WFC3624', 'WFC2418LB', 'WFC3648LB', 'WFC3624LB', 'WFC3624G', 'WFC3648G', 'WFC3648', 'LOWFC3624LB', 'LOWFC3624G', 'LOWFC3624', 'LOWFC2418LB', 'LOWFC2418G', 'LOWFC2418', 'LOWFC3648LB', 'LOWFC3648', 'LOWFC3648G', 'WM-7-B', 'WM-7-G', 'WM-7-BK', 'WMC-7', 'WM-7-R', 'APS-50', 'APS-70', 'APS-60', 'APS-84', 'SS15W', 'SC15W', 'SB15W', 'MFL-2W', 'WP-48', 'WP-40', 'WP-36', 'MP-48', 'MP-40', 'MP-36', 'OP-40', 'OP-36', 'OP-48', 'FFVSU96-2', 'FFVSU144-2', 'FFVSU192-2', '1-WA-1B', '1-WA-1BP', 'WCS-12', 'WCS-144', 'OPLD3416LSPP-2', 'OPLD3416LSPP-4', 'OPLD3416LSPP-5', 'OPLD3416LSPP-7', 'OPLD3416LSPP-8', 'OPLD1818LSPP-2', 'OPLD1818LSPP-4', 'OPLD1818LSPP-5', 'OPLD1818LSPP-7', 'OPLD1818LSPP-8', 'OPLD1818L-2', 'OPLD1818L-5', 'OPLD1818L-4', 'OPLD3416L-2', 'OPLD3416L-4', 'OPLD3416L-5', 'OPLD3416L-7', 'OPLD3416L-8', 'OPLD1818L-7', 'OPLD1818L-8', 'OPLD3416SPP-8-892', 'OPLD3416SPP-8-897', 'OPLD3416SPP-8-878', 'OPLD3416SPP-8-885', 'OPLD3416SPP-8-887', 'OPLD3416SPP-8-890', 'OPLD3416SPP-8-845', 'OPLD3416SPP-8-854', 'OPLD3416SPP-8-856', 'OPLD3416SPP-8-876', 'OPLD3416SPP-8-802', 'OPLD3416SPP-8-706', 'OPLD3416SPP-8-705', 'OPLD3416SPP-8-704', 'OPLD3416SPP-8-837', 'OPLD3416SPP-8-831', 'OPLD3416SPP-8-819', 'OPLD3416SPP-8-812', 'OPLD3416SPP-8-685', 'OPLD3416SPP-8-683', 'OPLD3416SPP-8-679', 'OPLD3416SPP-8-531', 'OPLD3416SPP-8-703', 'OPLD3416SPP-8-702', 'OPLD3416SPP-8-701', 'OPLD3416SPP-8-700', 'OPLD3416SPP-7-892', 'OPLD3416SPP-7-897', 'OPLD3416SPP-7-887', 'OPLD3416SPP-7-890', 'OPLD3416SPP-8-530', 'OPLD3416SPP-7-845', 'OPLD3416SPP-7-854', 'OPLD3416SPP-7-831', 'OPLD3416SPP-7-837', 'OPLD3416SPP-7-878', 'OPLD3416SPP-7-885', 'OPLD3416SPP-7-856', 'OPLD3416SPP-7-876', 'OPLD3416SPP-7-703', 'OPLD3416SPP-7-702', 'OPLD3416SPP-7-705', 'OPLD3416SPP-7-704', 'OPLD3416SPP-7-802', 'OPLD3416SPP-7-706', 'OPLD3416SPP-7-819', 'OPLD3416SPP-7-812', 'OPLD3416SPP-7-530', 'OPLD3416SPP-7-679', 'OPLD3416SPP-7-531', 'OPLD3416SPP-7-685', 'OPLD3416SPP-7-683', 'OPLD3416SPP-7-701', 'OPLD3416SPP-7-700', 'OPLD3416SPP-5-878', 'OPLD3416SPP-5-885', 'OPLD3416SPP-5-887', 'OPLD3416SPP-5-890', 'OPLD3416SPP-5-892', 'OPLD3416SPP-5-897', 'OPLD3416SPP-5-812', 'OPLD3416SPP-5-819', 'OPLD3416SPP-5-831', 'OPLD3416SPP-5-837', 'OPLD3416SPP-5-845', 'OPLD3416SPP-5-854', 'OPLD3416SPP-5-856', 'OPLD3416SPP-5-876', 'OPLD1818SPP-8-819', 'OPLD1818SPP-8-831', 'OPLD1818SPP-8-802', 'OPLD1818SPP-8-812', 'OPLD1818SPP-8-854', 'OPLD1818SPP-8-856', 'OPLD1818SPP-8-837', 'OPLD1818SPP-8-845', 'OPLD1818SPP-8-701', 'OPLD1818SPP-8-702', 'OPLD1818SPP-8-685', 'OPLD1818SPP-8-700', 'OPLD1818SPP-8-705', 'OPLD1818SPP-8-706', 'OPLD1818SPP-8-703', 'OPLD1818SPP-8-704', 'OPLD1818SPP-8-887', 'OPLD1818SPP-8-885', 'OPLD1818SPP-8-878', 'OPLD1818SPP-8-876', 'OPLD1818SPP-8-897', 'OPLD1818SPP-8-892', 'OPLD1818SPP-8-890', 'OPLD3416SPP-4-837', 'OPLD3416SPP-4-831', 'OPLD3416SPP-4-854', 'OPLD3416SPP-4-845', 'OPLD3416SPP-4-802', 'OPLD3416SPP-4-706',
'OPLD3416SPP-4-819', 'OPLD3416SPP-4-812', 'OPLD3416SPP-4-890', 'OPLD3416SPP-4-887', 'OPLD3416SPP-4-897', 'OPLD3416SPP-4-892', 'OPLD3416SPP-4-876', 'OPLD3416SPP-4-856', 'OPLD3416SPP-4-885', 'OPLD3416SPP-4-878', 'OPLD3416SPP-5-531', 'OPLD3416SPP-5-679', 'OPLD3416SPP-5-683', 'OPLD3416SPP-5-685', 'OPLD3416SPP-5-530', 'OPLD3416SPP-5-704', 'OPLD3416SPP-5-705', 'OPLD3416SPP-5-706', 'OPLD3416SPP-5-802', 'OPLD3416SPP-5-700', 'OPLD3416SPP-5-701', 'OPLD3416SPP-5-702', 'OPLD3416SPP-5-703', 'OPLD3416SPP-2-837', 'OPLD3416SPP-2-831', 'OPLD3416SPP-2-819', 'OPLD3416SPP-2-812', 'OPLD3416SPP-2-802', 'OPLD3416SPP-2-706', 'OPLD3416SPP-2-705', 'OPLD3416SPP-2-704', 'OPLD3416SPP-2-890', 'OPLD3416SPP-2-887', 'OPLD3416SPP-2-885', 'OPLD3416SPP-2-878', 'OPLD3416SPP-2-876', 'OPLD3416SPP-2-856', 'OPLD3416SPP-2-854', 'OPLD3416SPP-2-845', 'OPLD3416SPP-4-531', 'OPLD3416SPP-4-679', 'OPLD3416SPP-4-530', 'OPLD3416SPP-2-892', 'OPLD3416SPP-2-897', 'OPLD3416SPP-4-704', 'OPLD3416SPP-4-705', 'OPLD3416SPP-4-702', 'OPLD3416SPP-4-703', 'OPLD3416SPP-4-700', 'OPLD3416SPP-4-701', 'OPLD3416SPP-4-683', 'OPLD3416SPP-4-685', 'OPLD3416SPP-2-530', 'OPLD3416SPP-2-531', 'OPLD3416SPP-2-679', 'OPLD3416SPP-2-683', 'OPLD3416SPP-2-685', 'OPLD3416SPP-2-700', 'OPLD3416SPP-2-701', 'OPLD3416SPP-2-702', 'OPLD3416SPP-2-703', 'OPLD1818SPP-7-819', 'OPLD1818SPP-7-831', 'OPLD1818SPP-7-837', 'OPLD1818SPP-7-845', 'OPLD1818SPP-7-705', 'OPLD1818SPP-7-706', 'OPLD1818SPP-7-802', 'OPLD1818SPP-7-812', 'OPLD1818SPP-7-701', 'OPLD1818SPP-7-702', 'OPLD1818SPP-7-703', 'OPLD1818SPP-7-704', 'OPLD1818SPP-7-679', 'OPLD1818SPP-7-683', 'OPLD1818SPP-7-685', 'OPLD1818SPP-7-700', 'OPLD1818SPP-8-531', 'OPLD1818SPP-8-530', 'OPLD1818SPP-8-683', 'OPLD1818SPP-8-679', 'OPLD1818SPP-7-897', 'OPLD1818SPP-7-887', 'OPLD1818SPP-7-885', 'OPLD1818SPP-7-892', 'OPLD1818SPP-7-890', 'OPLD1818SPP-7-856', 'OPLD1818SPP-7-854', 'OPLD1818SPP-7-878', 'OPLD1818SPP-7-876', 'OPLD1818SPP-5-819', 'OPLD1818SPP-5-831', 'OPLD1818SPP-5-802', 'OPLD1818SPP-5-812', 'OPLD1818SPP-5-705', 'OPLD1818SPP-5-706', 'OPLD1818SPP-5-703', 'OPLD1818SPP-5-704', 'OPLD1818SPP-5-701', 'OPLD1818SPP-5-702', 'OPLD1818SPP-5-685', 'OPLD1818SPP-5-700', 'OPLD1818SPP-5-679', 'OPLD1818SPP-5-683', 'OPLD1818SPP-5-530', 'OPLD1818SPP-5-531', 'OPLD1818SPP-7-531', 'OPLD1818SPP-7-530', 'OPLD1818SPP-5-897', 'OPLD1818SPP-5-892', 'OPLD1818SPP-5-890', 'OPLD1818SPP-5-887', 'OPLD1818SPP-5-885', 'OPLD1818SPP-5-878', 'OPLD1818SPP-5-876', 'OPLD1818SPP-5-856', 'OPLD1818SPP-5-854', 'OPLD1818SPP-5-845', 'OPLD1818SPP-5-837', 'OPLD1818SPP-4-701', 'OPLD1818SPP-4-702', 'OPLD1818SPP-4-703', 'OPLD1818SPP-4-704', 'OPLD1818SPP-4-705', 'OPLD1818SPP-4-706', 'OPLD1818SPP-4-802', 'OPLD1818SPP-4-812', 'OPLD1818SPP-4-530', 'OPLD1818SPP-4-531', 'OPLD1818SPP-4-679', 'OPLD1818SPP-4-683', 'OPLD1818SPP-4-685', 'OPLD1818SPP-4-700', 'OPLD1818SPP-4-887', 'OPLD1818SPP-2-837', 'OPLD1818SPP-2-845', 'OPLD1818SPP-2-854', 'OPLD1818SPP-2-856', 'OPLD1818SPP-2-802', 'OPLD1818SPP-2-812', 'OPLD1818SPP-2-819', 'OPLD1818SPP-2-831', 'OPLD1818SPP-2-890', 'OPLD1818SPP-2-892', 'OPLD1818SPP-2-897', 'OPLD1818SPP-2-876', 'OPLD1818SPP-2-878', 'OPLD1818SPP-2-885', 'OPLD1818SPP-2-887', 'OPLD1818SPP-2-531', 'OPLD1818SPP-2-530', 'OPLD1818SPP-2-683', 'OPLD1818SPP-2-679', 'OPLD1818SPP-2-704', 'OPLD1818SPP-2-703',
'OPLD1818SPP-2-706', 'OPLD1818SPP-2-705', 'OPLD1818SPP-2-700', 'OPLD1818SPP-2-685', 'OPLD1818SPP-2-702', 'OPLD1818SPP-2-701', 'OPLD1818SPP-4-876', 'OPLD1818SPP-4-878', 'OPLD1818SPP-4-854', 'OPLD1818SPP-4-856', 'OPLD1818SPP-4-837', 'OPLD1818SPP-4-845', 'OPLD1818SPP-4-819', 'OPLD1818SPP-4-831', 'OPLD1818SPP-4-897', 'OPLD1818SPP-4-890', 'OPLD1818SPP-4-892', 'OPLD1818SPP-4-885', 'PLD4832DPP-2-845', 'PLD4832DPP-2-837', 'PLD4832DPP-2-856', 'PLD4832DPP-2-854', 'PLD4832DPP-2-878', 'PLD4832DPP-2-876', 'PLD4832DPP-2-887', 'PLD4832DPP-2-885', 'PLD4832DPP-2-892', 'PLD4832DPP-2-890', 'PLD4832DPP-2-897', 'PLD4832DPP-4-531', 'PLD4832DPP-4-530', 'PLD4832DPP-4-679', 'PLD4832DPP-4-683', 'PLD4832DPP-4-685', 'PLD4832DPP-4-700', 'PLD4832DPP-4-701', 'PLD4832DPP-4-702', 'PLD4832DPP-4-703', 'PLD4832DPP-4-704', 'PLD4832DPP-4-705', 'PLD4832DPP-4-706', 'PLD4832DPP-4-802', 'PLD4832DPP-4-812', 'PLD4832DPP-4-819', 'PLD4832DPP-4-831', 'PLD4832DPP-4-837', 'PLD4832DPP-4-845', 'PLD4832DPP-4-878', 'PLD4832DPP-4-876', 'PLD4832DPP-4-856', 'PLD4832DPP-4-854', 'PLD4832DPP-4-892', 'PLD4832DPP-4-890', 'PLD4832DPP-4-887', 'PLD4832DPP-4-885', 'PLD4832DPP-4-897', 'PLD4832DPP-5-683', 'PLD4832DPP-5-679', 'PLD4832DPP-5-531', 'PLD4832DPP-5-530', 'PLD4832DPP-5-701', 'PLD4832DPP-5-702', 'PLD4832DPP-5-685', 'PLD4832DPP-5-700', 'PLD4832DPP-5-705', 'PLD4832DPP-5-706', 'PLD4832DPP-5-703', 'PLD4832DPP-5-704', 'PLD4832DPP-5-819', 'PLD4832DPP-5-831', 'PLD4832DPP-5-802', 'PLD4832DPP-5-812', 'PLD4832DPP-5-854', 'PLD4832DPP-5-856', 'PLD4832DPP-5-837', 'PLD4832DPP-5-845', 'PLD4832DPP-2-701', 'PLD4832DPP-2-702', 'PLD4832DPP-2-685', 'PLD4832DPP-2-700', 'PLD4832DPP-2-679', 'PLD4832DPP-2-683', 'PLD4832DPP-2-530', 'PLD4832DPP-2-531', 'PLD4832DPP-2-819', 'PLD4832DPP-2-831', 'PLD4832DPP-2-802', 'PLD4832DPP-2-812', 'PLD4832DPP-2-705', 'PLD4832DPP-2-706', 'PLD4832DPP-2-703', 'PLD4832DPP-2-704', 'PLD4226DPP-8-887', 'PLD4226DPP-8-890', 'PLD4226DPP-8-892', 'PLD4226DPP-8-897', 'PLD4226DPP-8-856', 'PLD4226DPP-8-876', 'PLD4226DPP-8-878', 'PLD4226DPP-8-885', 'PLD4226DPP-8-831', 'PLD4226DPP-8-837', 'PLD4226DPP-8-845', 'PLD4226DPP-8-854', 'PLD4226DPP-8-706', 'PLD4226DPP-8-802', 'PLD4226DPP-8-812', 'PLD4226DPP-8-819', 'PLD4226DPP-5-892', 'PLD4226DPP-5-897', 'PLD4226DPP-5-887', 'PLD4226DPP-5-890', 'PLD4226DPP-7-530', 'PLD4226DPP-7-683', 'PLD4226DPP-7-685', 'PLD4226DPP-7-531', 'PLD4226DPP-7-679', 'PLD4226DPP-7-702', 'PLD4226DPP-7-703', 'PLD4226DPP-7-700', 'PLD4226DPP-7-701', 'PLD4226DPP-5-705', 'PLD4226DPP-5-704', 'PLD4226DPP-5-703', 'PLD4226DPP-5-702', 'PLD4226DPP-5-819', 'PLD4226DPP-5-812', 'PLD4226DPP-5-802', 'PLD4226DPP-5-706', 'PLD4226DPP-5-854', 'PLD4226DPP-5-845', 'PLD4226DPP-5-837', 'PLD4226DPP-5-831', 'PLD4226DPP-5-885', 'PLD4226DPP-5-878', 'PLD4226DPP-5-876', 'PLD4226DPP-5-856', 'PLD4226DPP-7-892', 'PLD4226DPP-7-897', 'PLD4226DPP-8-530', 'PLD4226DPP-8-531', 'PLD4226DPP-8-679', 'PLD4226DPP-8-683', 'PLD4226DPP-8-685', 'PLD4226DPP-8-700', 'PLD4226DPP-8-701', 'PLD4226DPP-8-702', 'PLD4226DPP-8-703', 'PLD4226DPP-8-704', 'PLD4226DPP-8-705', 'PLD4226DPP-7-705', 'PLD4226DPP-7-704', 'PLD4226DPP-7-802', 'PLD4226DPP-7-706', 'PLD4226DPP-7-819', 'PLD4226DPP-7-812', 'PLD4226DPP-7-837', 'PLD4226DPP-7-831', 'PLD4226DPP-7-854', 'PLD4226DPP-7-845', 'PLD4226DPP-7-876', 'PLD4226DPP-7-856', 'PLD4226DPP-7-885', 'PLD4226DPP-7-878', 'PLD4226DPP-7-890', 'PLD4226DPP-7-887', 'PLD4226DPP-2-892', 'PLD4226DPP-2-897', 'PLD4226DPP-2-887', 'PLD4226DPP-2-890', 'PLD4226DPP-2-878', 'PLD4226DPP-2-885', 'PLD4226DPP-2-856', 'PLD4226DPP-2-876', 'PLD4226DPP-4-683', 'PLD4226DPP-4-685', 'PLD4226DPP-4-531', 'PLD4226DPP-4-679', 'PLD4226DPP-4-530', 'PLD4226DPP-2-705', 'PLD4226DPP-2-704', 'PLD4226DPP-2-703', 'PLD4226DPP-2-702', 'PLD4226DPP-2-701', 'PLD4226DPP-2-700', 'PLD4226DPP-2-685', 'PLD4226DPP-2-683', 'PLD4226DPP-2-854', 'PLD4226DPP-2-845', 'PLD4226DPP-2-837', 'PLD4226DPP-2-831', 'PLD4226DPP-2-819', 'PLD4226DPP-2-812', 'PLD4226DPP-2-802', 'PLD4226DPP-2-706', 'PLD4226DPP-4-892', 'PLD4226DPP-4-897', 'PLD4226DPP-4-878', 'PLD4226DPP-4-885', 'PLD4226DPP-4-887', 'PLD4226DPP-4-890', 'PLD4226DPP-5-683', 'PLD4226DPP-5-685', 'PLD4226DPP-5-700', 'PLD4226DPP-5-701', 'PLD4226DPP-5-530', 'PLD4226DPP-5-531', 'PLD4226DPP-5-679', 'PLD4226DPP-4-705', 'PLD4226DPP-4-704', 'PLD4226DPP-4-802', 'PLD4226DPP-4-706', 'PLD4226DPP-4-701', 'PLD4226DPP-4-700', 'PLD4226DPP-4-703', 'PLD4226DPP-4-702', 'PLD4226DPP-4-854', 'PLD4226DPP-4-845', 'PLD4226DPP-4-876', 'PLD4226DPP-4-856', 'PLD4226DPP-4-819', 'PLD4226DPP-4-812', 'PLD4226DPP-4-837', 'PLD4226DPP-4-831', 'PLD4226DPP-2-530', 'PLD4226DPP-2-679', 'PLD4226DPP-2-531', 'PLD5438DPP-5-683', 'PLD5438DPP-5-685', 'PLD5438DPP-5-531', 'PLD5438DPP-5-679', 'PLD5438DPP-5-702', 'PLD5438DPP-5-703', 'PLD5438DPP-5-700', 'PLD5438DPP-5-701', 'PLD5438DPP-5-706', 'PLD5438DPP-5-802', 'PLD5438DPP-5-704', 'PLD5438DPP-5-705', 'PLD5438DPP-5-831', 'PLD5438DPP-5-837', 'PLD5438DPP-5-812', 'PLD5438DPP-5-819', 'PLD5438DPP-5-876', 'PLD5438DPP-5-856', 'PLD5438DPP-5-854', 'PLD5438DPP-5-845', 'PLD5438DPP-5-890', 'PLD5438DPP-5-887', 'PLD5438DPP-5-885', 'PLD5438DPP-5-878', 'PLD5438DPP-5-897', 'PLD5438DPP-5-892', 'PLD5438DPP-7-679', 'PLD5438DPP-7-531', 'PLD5438DPP-7-530', 'PLD5438DPP-4-530', 'PLD5438DPP-4-531', 'PLD5438DPP-4-679', 'PLD5438DPP-4-683', 'PLD5438DPP-4-685', 'PLD5438DPP-4-700', 'PLD5438DPP-4-701', 'PLD5438DPP-4-702', 'PLD5438DPP-4-703', 'PLD5438DPP-4-704', 'PLD5438DPP-4-705', 'PLD5438DPP-4-706', 'PLD5438DPP-4-802', 'PLD5438DPP-4-812', 'PLD5438DPP-4-819', 'PLD5438DPP-4-837', 'PLD5438DPP-4-831', 'PLD5438DPP-4-854', 'PLD5438DPP-4-845', 'PLD5438DPP-4-876', 'PLD5438DPP-4-856', 'PLD5438DPP-4-885', 'PLD5438DPP-4-878', 'PLD5438DPP-4-890', 'PLD5438DPP-4-887', 'PLD5438DPP-4-897', 'PLD5438DPP-4-892', 'PLD5438DPP-5-530',
'PLD5438DPP
None
the final sku in there PLD5438DPP should be PLD5438DPP-5-683 and for some reason the list cuts off there, which is only element 564/85,892, and the program terminates without an error code
I cannot attach the file of skus, this is for my job, just hoping someone can shed light on what I am doing to cause the list to cut short like that
this may or may not also be relevant but when I call .append(sku) as opposed to sku[1] and grab the whole tuple the same issue occurs but at element 292, exactly half of the amount of element appended when only doing half the tuple
The issue seems to be one on my local machine, where it was unable to print such a long list, this one was of size 85,892
for those with similar issues see if any of our specs are overlapping and that may determine the cause of this issue:
VSCode:
Version: 1.52.0 (user setup)
Commit: 940b5f4bb5fa47866a54529ed759d95d09ee80be
Date: 2020-12-10T22:45:11.850Z
Electron: 9.3.5
Chrome: 83.0.4103.122
Node.js: 12.14.1
V8: 8.3.110.13-electron.0
OS: Windows_NT x64 10.0.18363
Python:
3.9.0
see discussion in comments for other details

parse xml to pandas data frame in python

I am trying to read the XML file and convert it to pandas. However it returns empty data
This is the sample of xml structure:
<Instance ID="1">
<MetaInfo StudentID ="DTSU040" TaskID="LP03_PR09.bLK.sh" DataSource="DeepTutorSummer2014"/>
<ProblemDescription>A car windshield collides with a mosquito, squashing it.</ProblemDescription>
<Question>How does this work tion?</Question>
<Answer>tthis is my best </Answer>
<Annotation Label="correct(0)|correct_but_incomplete(1)|contradictory(0)|incorrect(0)">
<AdditionalAnnotation ContextRequired="0" ExtraInfoInAnswer="0"/>
<Comments Watch="1"> The student forgot to tell the opposite force. Opposite means opposite direction, which is important here. However, one can argue that the opposite is implied. See the reference answers.</Comments>
</Annotation>
<ReferenceAnswers>
1: Since the windshield exerts a force on the mosquito, which we can call action, the mosquito exerts an equal and opposite force on the windshield, called the reaction.
</ReferenceAnswers>
</Instance>
I have tried this code, however it's not working on my side. It returns empty dataframe.
import pandas as pd
import xml.etree.ElementTree as et
xtree = et.parse("grade_data.xml")
xroot = xtree.getroot()
df_cols = ["ID", "TaskID", "DataSource", "ProblemDescription", 'Question', 'Answer',
'ContextRequired', 'ExtraInfoInAnswer', 'Comments', 'Watch', 'ReferenceAnswers']
rows = []
for node in xroot:
s_name = node.attrib.get("ID")
s_student = node.find("StudentID")
s_task = node.find("TaskID")
s_source = node.find("DataSource")
s_desc = node.find("ProblemDescription")
s_question = node.find("Question")
s_ans = node.find("Answer")
s_label = node.find("Label")
s_contextrequired = node.find("ContextRequired")
s_extraInfoinAnswer = node.find("ExtraInfoInAnswer")
s_comments = node.find("Comments")
s_watch = node.find("Watch")
s_referenceAnswers = node.find("ReferenceAnswers")
rows.append({"ID": s_name,"StudentID":s_student, "TaskID": s_task,
"DataSource": s_source, "ProblemDescription": s_desc ,
"Question": s_question , "Answer": s_ans ,"Label": s_label,
"s_contextrequired": s_contextrequired , "ExtraInfoInAnswer": s_extraInfoinAnswer ,
"Comments": s_comments , "Watch": s_watch, "ReferenceAnswers": s_referenceAnswers,
})
out_df = pd.DataFrame(rows, columns = df_cols)
The problem in your solution was that the "element data extraction" was not done properly. The xml you mentioned in the question is nested in several layers. And that is why we need to recursively read and extract the data. The following solution should give you what you need in this case. Although I would encourage you to look at this article and the python documentation for more clarity.
Method: 1
import numpy as np
import pandas as pd
#import os
import xml.etree.ElementTree as ET
def xml2df(xml_source, df_cols, source_is_file = False, show_progress=True):
"""Parse the input XML source and store the result in a pandas
DataFrame with the given columns.
For xml_source = xml_file, Set: source_is_file = True
For xml_source = xml_string, Set: source_is_file = False
<element attribute_key1=attribute_value1, attribute_key2=attribute_value2>
<child1>Child 1 Text</child1>
<child2>Child 2 Text</child2>
<child3>Child 3 Text</child3>
</element>
Note that for an xml structure as shown above, the attribute information of
element tag can be accessed by list(element). Any text associated with <element> tag can be accessed
as element.text and the name of the tag itself can be accessed with
element.tag.
"""
if source_is_file:
xtree = ET.parse(xml_source) # xml_source = xml_file
xroot = xtree.getroot()
else:
xroot = ET.fromstring(xml_source) # xml_source = xml_string
consolidator_dict = dict()
default_instance_dict = {label: None for label in df_cols}
def get_children_info(children, instance_dict):
# We avoid using element.getchildren() as it is deprecated.
# Instead use list(element) to get a list of attributes.
for child in children:
#print(child)
#print(child.tag)
#print(child.items())
#print(child.getchildren()) # deprecated method
#print(list(child))
if len(list(child))>0:
instance_dict = get_children_info(list(child),
instance_dict)
if len(list(child.keys()))>0:
items = child.items()
instance_dict.update({key: value for (key, value) in items})
#print(child.keys())
instance_dict.update({child.tag: child.text})
return instance_dict
# Loop over all instances
for instance in list(xroot):
instance_dict = default_instance_dict.copy()
ikey, ivalue = instance.items()[0] # The first attribute is "ID"
instance_dict.update({ikey: ivalue})
if show_progress:
print('{}: {}={}'.format(instance.tag, ikey, ivalue))
# Loop inside every instance
instance_dict = get_children_info(list(instance),
instance_dict)
#consolidator_dict.update({ivalue: instance_dict.copy()})
consolidator_dict[ivalue] = instance_dict.copy()
df = pd.DataFrame(consolidator_dict).T
df = df[df_cols]
return df
Run the following to generate the desired output.
xml_source = r'grade_data.xml'
df_cols = ["ID", "TaskID", "DataSource", "ProblemDescription", "Question", "Answer",
"ContextRequired", "ExtraInfoInAnswer", "Comments", "Watch", 'ReferenceAnswers']
df = xml2df(xml_source, df_cols, source_is_file = True)
df
Method: 2
Given you have the xml_string, you could convert xml >> dict >> dataframe. run the following to get the desired output.
Note: You will need to install xmltodict to use Method-2. This method is inspired by the solution suggested by #martin-blech at How to convert XML to JSON in Python? [duplicate]
. Kudos to #martin-blech for making it.
pip install -U xmltodict
Solution
def read_recursively(x, instance_dict):
#print(x)
txt = ''
for key in x.keys():
k = key.replace("#","")
if k in df_cols:
if isinstance(x.get(key), dict):
instance_dict, txt = read_recursively(x.get(key), instance_dict)
#else:
instance_dict.update({k: x.get(key)})
#print('{}: {}'.format(k, x.get(key)))
else:
#print('else: {}: {}'.format(k, x.get(key)))
# dig deeper if value is another dict
if isinstance(x.get(key), dict):
instance_dict, txt = read_recursively(x.get(key), instance_dict)
# add simple text associated with element
if k=='#text':
txt = x.get(key)
# update text to corresponding parent element
if (k!='#text') and (txt!=''):
instance_dict.update({k: txt})
return (instance_dict, txt)
You will need the function read_recursively() given above. Now run the following.
import xmltodict, json
o = xmltodict.parse(xml_string) # INPUT: XML_STRING
#print(json.dumps(o)) # uncomment to see xml to json converted string
consolidated_dict = dict()
oi = o['Instances']['Instance']
for x in oi:
instance_dict = dict()
instance_dict, _ = read_recursively(x, instance_dict)
consolidated_dict.update({x.get("#ID"): instance_dict.copy()})
df = pd.DataFrame(consolidated_dict).T
df = df[df_cols]
df
Several issues:
Calling .find on the loop variable, node, expects a child node to exist: current_node.find('child_of_current_node'). However, since all the nodes are the children of root they do not maintain their own children, so no loop is required;
Not checking NoneType that can result from missing nodes with find() and prevents retrieving .tag or .text or other attributes;
Not retrieving node content with .text, otherwise the <Element... object is returned;
Consider this adjustment using the ternary condition expression a if condition else b to ensure variable has a value regardless:
rows = []
s_name = xroot.attrib.get("ID")
s_student = xroot.find("StudentID").text if xroot.find("StudentID") is not None else None
s_task = xroot.find("TaskID").text if xroot.find("TaskID") is not None else None
s_source = xroot.find("DataSource").text if xroot.find("DataSource") is not None else None
s_desc = xroot.find("ProblemDescription").text if xroot.find("ProblemDescription") is not None else None
s_question = xroot.find("Question").text if xroot.find("Question") is not None else None
s_ans = xroot.find("Answer").text if xroot.find("Answer") is not None else None
s_label = xroot.find("Label").text if xroot.find("Label") is not None else None
s_contextrequired = xroot.find("ContextRequired").text if xroot.find("ContextRequired") is not None else None
s_extraInfoinAnswer = xroot.find("ExtraInfoInAnswer").text if xroot.find("ExtraInfoInAnswer") is not None else None
s_comments = xroot.find("Comments").text if xroot.find("Comments") is not None else None
s_watch = xroot.find("Watch").text if xroot.find("Watch") is not None else None
s_referenceAnswers = xroot.find("ReferenceAnswers").text if xroot.find("ReferenceAnswers") is not None else None
rows.append({"ID": s_name,"StudentID":s_student, "TaskID": s_task,
"DataSource": s_source, "ProblemDescription": s_desc ,
"Question": s_question , "Answer": s_ans ,"Label": s_label,
"s_contextrequired": s_contextrequired , "ExtraInfoInAnswer": s_extraInfoinAnswer ,
"Comments": s_comments , "Watch": s_watch, "ReferenceAnswers": s_referenceAnswers
})
out_df = pd.DataFrame(rows, columns = df_cols)
Alternatively, run a more dynamic version assigning to an inner dictionary using the iterator variable:
rows = []
for node in xroot:
inner = {}
inner[node.tag] = node.text
rows.append(inner)
out_df = pd.DataFrame(rows, columns = df_cols)
Or list/dict comprehension:
rows = [{node.tag: node.text} for node in xroot]
out_df = pd.DataFrame(rows, columns = df_cols)

lxml: Get all leaf nodes?

Give an XML file, is there a way using lxml to get all the leaf nodes with their names and attributes?
Here is the XML file of interest:
<?xml version="1.0" encoding="UTF-8"?>
<clinical_study>
<!-- This xml conforms to an XML Schema at:
http://clinicaltrials.gov/ct2/html/images/info/public.xsd
and an XML DTD at:
http://clinicaltrials.gov/ct2/html/images/info/public.dtd -->
<id_info>
<org_study_id>3370-2(-4)</org_study_id>
<nct_id>NCT00753818</nct_id>
<nct_alias>NCT00222157</nct_alias>
</id_info>
<brief_title>Developmental Effects of Infant Formula Supplemented With LCPUFA</brief_title>
<sponsors>
<lead_sponsor>
<agency>Mead Johnson Nutrition</agency>
<agency_class>Industry</agency_class>
</lead_sponsor>
</sponsors>
<source>Mead Johnson Nutrition</source>
<oversight_info>
<authority>United States: Institutional Review Board</authority>
</oversight_info>
<brief_summary>
<textblock>
The purpose of this study is to compare the effects on visual development, growth, cognitive
development, tolerance, and blood chemistry parameters in term infants fed one of four study
formulas containing various levels of DHA and ARA.
</textblock>
</brief_summary>
<overall_status>Completed</overall_status>
<phase>N/A</phase>
<study_type>Interventional</study_type>
<study_design>N/A</study_design>
<primary_outcome>
<measure>visual development</measure>
</primary_outcome>
<secondary_outcome>
<measure>Cognitive development</measure>
</secondary_outcome>
<number_of_arms>4</number_of_arms>
<condition>Cognitive Development</condition>
<condition>Growth</condition>
<arm_group>
<arm_group_label>1</arm_group_label>
<arm_group_type>Experimental</arm_group_type>
</arm_group>
<arm_group>
<arm_group_label>2</arm_group_label>
<arm_group_type>Experimental</arm_group_type>
</arm_group>
<arm_group>
<arm_group_label>3</arm_group_label>
<arm_group_type>Experimental</arm_group_type>
</arm_group>
<arm_group>
<arm_group_label>4</arm_group_label>
<arm_group_type>Other</arm_group_type>
<description>Control</description>
</arm_group>
<intervention>
<intervention_type>Other</intervention_type>
<intervention_name>DHA and ARA</intervention_name>
<description>various levels of DHA and ARA</description>
<arm_group_label>1</arm_group_label>
<arm_group_label>2</arm_group_label>
<arm_group_label>3</arm_group_label>
</intervention>
<intervention>
<intervention_type>Other</intervention_type>
<intervention_name>Control</intervention_name>
<arm_group_label>4</arm_group_label>
</intervention>
</clinical_study>
What I would like is a dictionary that looks like this:
{
'id_info_org_study_id': '3370-2(-4)',
'id_info_nct_id': 'NCT00753818',
'id_info_nct_alias': 'NCT00222157',
'brief_title': 'Developmental Effects...'
}
Is this possible with lxml - or indeed any other Python library?
UPDATE:
I ended up doing it this way:
response = requests.get(url)
tree = lxml.etree.fromstring(response.content)
mydict = self._recurse_over_nodes(tree, None, {})
def _recurse_over_nodes(self, tree, parent_key, data):
for branch in tree:
key = branch.tag
if branch.getchildren():
if parent_key:
key = '%s_%s' % (parent_key, key)
data = self._recurse_over_nodes(branch, key, data)
else:
if parent_key:
key = '%s_%s' % (parent_key, key)
if key in data:
data[key] = data[key] + ', %s' % branch.text
else:
data[key] = branch.text
return data
Use the iter method.
http://lxml.de/api/lxml.etree._Element-class.html#iter
Here is a functioning example.
#!/usr/bin/python
from lxml import etree
xml='''
<book>
<chapter id="113">
<sentence id="1" drums='Neil'>
<word id="128160" bass='Geddy'>
<POS Tag="V"/>
<grammar type="STEM"/>
<Aspect type="IMPV"/>
<Number type="S"/>
</word>
<word id="128161">
<POS Tag="V"/>
<grammar type="STEM"/>
<Aspect type="IMPF"/>
</word>
</sentence>
<sentence id="2">
<word id="128162">
<POS Tag="P"/>
<grammar type="PREFIX"/>
<Tag Tag="bi+"/>
</word>
</sentence>
</chapter>
</book>
'''
filename='/usr/share/sri/configurations/saved/test1.xml'
if __name__ == '__main__':
root = etree.fromstring(xml)
# iter will return every node in the document
#
for node in root.iter('*'):
# nodes of length zero are leaf nodes
#
if 0 == len(node):
print node
Here is the output:
$ ./verifyXmlWithDirs.py
<Element POS at 0x176dcf8>
<Element grammar at 0x176da70>
<Element Aspect at 0x176dc20>
<Element Number at 0x176dcf8>
<Element POS at 0x176dc20>
<Element grammar at 0x176dcf8>
<Element Aspect at 0x176da70>
<Element POS at 0x176da70>
<Element grammar at 0x176dc20>
<Element Tag at 0x176dcf8>
Supposed you have done getroot(), something simple like below can construct a dictionary with what you expected:
import lxml.etree
tree = lxml.etree.parse('sample_ctgov.xml')
root = tree.getroot()
d = {}
for node in root:
key = node.tag
if node.getchildren():
for child in node:
key += '_' + child.tag
d.update({key: child.text})
else:
d.update({key: node.text})
Should do the trick, not optimised nor recursively hunt all children nodes, but you get the idea where to start.
Try this out:
from xml.etree import ElementTree
def crawl(root, prefix='', memo={}):
new_prefix = root.tag
if len(prefix) > 0:
new_prefix = prefix + "_" + new_prefix
for child in root.getchildren():
crawl(child, new_prefix, memo)
if len(root.getchildren()) == 0:
memo[new_prefix] = root.text
return memo
e = ElementTree.parse("data.xml")
nodes = crawl(e.getroot())
for k, v in nodes.items():
print k, v
crawl initially takes in the root of an xml tree. It then walks all of its children (recursively) keeping track of all of the tags it went over to get there (that's the whole prefix thing). When it finally finds an element with no children, it saves that data in memo.
Part of the output:
clinical_study_intervention_intervention_name Control clinical_study_phase
N/A clinical_study_arm_group_arm_group_type Other
clinical_study_id_info_nct_id NCT00753818

Python XML iterate over multiple blocks

I have an python XML parsing problem that I can't seem to figure out.
I have the following XML:
<data>
<data_in base="base64">
</data_in>
<log_sense_data>
<ds base="bool">1</ds>
<spf base="bool">0</spf>
<page_code base="hex">15</page_code>
<background_scan_results_log_page>
<parameter>
<parameter_code base="hex">0000</parameter_code>
<du base="bool">0</du>
<tsd base="bool">0</tsd>
<etc base="bool">0</etc>
<tmc base="hex">00</tmc>
<format_linking base="hex">03</format_linking>
<parameter_length base="dec">12</parameter_length>
<description base="string">background scanning status parameter</description>
<accumulated_power_on_minutes base="dec">579578</accumulated_power_on_minutes>
<background_scanning_status base="hex">01</background_scanning_status>
<number_of_background_scans_performed base="dec">112</number_of_background_scans_performed>
<background_scan_progress base="hex">00000036</background_scan_progress>
<number_of_background_medium_scans_performed base="dec">112</number_of_background_medium_scans_performed>
</parameter>
<parameter>
<parameter_code base="hex">0001</parameter_code>
<du base="bool">0</du>
<tsd base="bool">0</tsd>
<etc base="bool">0</etc>
<tmc base="hex">00</tmc>
<format_linking base="hex">03</format_linking>
<parameter_length base="dec">20</parameter_length>
<description base="string">background medium scan parameter</description>
<accumulated_power_on_minutes base="dec">82932</accumulated_power_on_minutes>
<reassign_status base="hex">05</reassign_status>
<sense_key base="hex">01</sense_key>
<additional_sense_code base="hex">17</additional_sense_code>
<additional_sense_code_qualifier base="hex">01</additional_sense_code_qualifier>
<vendor_specific base="hex">20e2570187</vendor_specific>
<logical_block_address base="hex">00000000478994d8</logical_block_address>
</parameter>
<parameter>
<parameter_code base="hex">0002</parameter_code>
<du base="bool">0</du>
<tsd base="bool">0</tsd>
<etc base="bool">0</etc>
<tmc base="hex">00</tmc>
<format_linking base="hex">03</format_linking>
<parameter_length base="dec">20</parameter_length>
<description base="string">background medium scan parameter</description>
<accumulated_power_on_minutes base="dec">104467</accumulated_power_on_minutes>
<reassign_status base="hex">05</reassign_status>
<sense_key base="hex">01</sense_key>
<additional_sense_code base="hex">18</additional_sense_code>
<additional_sense_code_qualifier base="hex">07</additional_sense_code_qualifier>
<vendor_specific base="hex">203ab846ea</vendor_specific>
<logical_block_address base="hex">00000000133d5046</logical_block_address>
</parameter>
</background_scan_results_log_page>
</log_sense_data>
</data>
Where Parameter_code 0000 will always exist, and there could be any number of parameter_codes after that. Esentially I want to pull 2 values (power on minutes, background scans) from parameter_code 0000, as well as most values from parameter_code 0001 and greater, to be later put into a database. The code I have so far is this:
import xml.etree.ElementTree as et
log_page_tree = et.fromstring(results['Data']['RawData'])
if log_page_tree.find('log_sense_data') == None:
continue
else:
for element in log_page_tree.find('log_sense_data'):
for pagecode in element.iter('page_code'):
if pagecode.text == '15':
for param in log_page_tree.find('log_sense_data').find('background_scan_results_log_page'):
for derp in param.iter():
print derp.tag, derp.text
#for totalpoweron in param.iter('accumulated_power_on_minutes'):
#print totalpoweron.text
I want to be able to keep the 2 values from parameter_code 0000, while iterating through the rest of the parameter_codes to be put into a database. Can anyone give me a push in the right direction here? If I specify param.iter('somevalue') to grab each value, the code doesn't seem to iterate.
OK, although there are ways you could simplify/improve your code, it sounds like you're happy up to here:
for param in log_page_tree.find('log_sense_data').find('background_scan_results_log_page'):
This will in fact iterate over each parameter.
But now you want to switch on whether parameter_code is 0000, doing different things in each case. So:
converters = {
'hex': lambda s: int(s, 16)
'dec': int,
'bool': bool
}
if param.find('parameter_code').text == '0000':
accumulated_power_on_minutes = int(param.find('accumulated_power_on_minutes').text)
number_of_background_scans_performed = int(param.find('number_of_background_scans_performed').text)
else:
obj = {}
for elem in param.getchildren():
name = elem.tag
base = elem.attrib['base']
converter = converters.get(base, lambda x: x)
value = convert(elem.text)
obj[name] = value
# do something with obj

Categories

Resources