Python Q - How do I fetch a particular value(event118 value) from a string which has many punctuations?

Viewed 23

I want to fetch event118 and other variables value from one csv file(38000rows) and write to another as output using python. The position of event118 and value is different in each row of excel file. String looks like this- products= ; prd9184 ; 1 ; 75.8 ; event8=11.5|event118=75.8|event11=0|event123=1|event129=11.5|event121=0 ; eVar128=brandID:500033|eVar98=collectid189&c5=us can someone pls suggest. I'm beginner to programming and python. Below is the code which I am using to fetch the data for other variables from the file and it's working fine but not sure how to do it for event118 and event129.

import csv
import urllib.parse
import datetime
from datetime import  timedelta
from random import randrange
time1 = datetime.datetime(2021,6,22)
import openpyxl
import pandas as pd
with open('input.csv', 'r') as file:
    reader = csv.reader(file)
    srcfile = openpyxl.load_workbook('template.xlsx', read_only=False)
    sheetname = srcfile.get_sheet_by_name('Sheet1')  # get sheetname from the file
    rowno = 2
    for row in reader:
        rowAr = row[0] 
        rowAr = urllib.parse.unquote(rowAr) 
        splitRowAr = rowAr.split('&') 
        for i in range(len(splitRowAr)): 
            iAr = splitRowAr[i].split('=')
            if iAr[0] == 'c1':
                sheetname['EU'+str(rowno)] = str(iAr[1])  
            if iAr[0] == 'c2':
                sheetname['EV' + str(rowno)] = str(iAr[1]) 

Sample complete row(csv input file)from where variable values are being fetched and sent to output: https://testpythonscripts.sc.omtrdc.net:443/b/ss/rsid/2/TOOL3/s7060632?AQB=1&ce=UTF-8&ns=sistr3&c.&a.&assets.&idlist=k345nah1-346t-rt70-93js-90ju45o983yc&.assets&assetimpression=1&.a&.c&events=,event51,event53,scAdd,scOpen,scView&products=;prd9184;1;75.8;event9=11.5|event118=75.8|event10=0|event139=1|event129=11.5|event142=0;eVar123=brandID:1000033|eVar42=collectid111&c5=us&c6=en&v7=Known&v8=gold&v9=crmid:926660374&v10=United States | Maryland | Reisterstown&v11=25-34 | Male&v12=en&v13=us&v14=http://www.dummysite.com&v16=Shoppable Media&c20=advertiser14&c21=adid-149&c22=Bottom Center&c23=120x60:Button 2&v32=acntid:868547461&v33=b&v42=28&v56=approverid:803412324&v57=formid:110&v58=fieldid:58&v62=errorid:157&v60=persona4&v82=Male&v128=audience 2&v129=segment 2&v130=group 2&v142=Website&pe=lnk_o&pev2=Add to Cart Click&s=1366x768&t=00/00/0000 00:00:00 0 -330&sdid=29ea964680003a82-23dd400000000039&mid=49891907651265362328116496040744237892&aamlh=9&bh=1162&bw=1274&c=32&AQE=1

1 Answers

Here we are

import re
data = "products= ; prd9184 ; 1 ; 75.8 ; event8=11.5|event118=75.8|event11=0|event123=1|event129=11.5|event121=0 ; eVar128=brandID:500033|eVar98=collectid189&c5=us"
res = re.match(r".*event118=(.*?)\|", data)
print(res.group(1))
Related