Published
Edited
Sep 23, 2022
1 fork
Insert cell
# DS - Parse a "row" of AA data
Using the raw data of the second row of "zone 8", available at:

https://github.com/visualizedata/data-structures/blob/master/aa_source_data.md#raw-data-for-september-14-parsing-exercise


Parse this into an array of arrays, where the outer array represents the "row" of the original table. There should be four inner arrays, where each of these arrays should represent a "row" of the new table (repeating the metadata). Do this in an Observable notebook, publish the notebook, and submit the notebook url to complete the assignment.

Some useful methods:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/search

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/substring

The notebook we used in class:

https://observablehq.com/@aaronxhill/september-14-text-parsing-exercise
Insert cell
tr1 = `
<tr style="margin-bottom:10px">
<td style="border-bottom:1px solid #e3e3e3; width:260px" valign="top">
<h4 style="margin:0;padding:0;">Union Baptist Church</h4><br />
<b>AA IT WORKS II - AA It Works II</b><br />
240 West 145th Street,
<br />(Betw 7th & 8th Avenues) NY 10039
<br />
<br />
<div class="detailsBox">
Thu=Altern.BB, Living Sober & Other A.A. Literature. <br />Fri.=Alternates between Step & Tradition.
</div>
<span style="color:darkblue; font-size:10pt;">
<img src="../images/wheelchair.jpg" alt="Wheelchair Access" width="20" vspace="5" hspace="10" align="absmiddle"/>Wheelchair access
</span>
</td>
<td style="border-bottom:1px solid #e3e3e3;width:350px;" valign="top">
<b>Wednesdays From</b> 10:00 AM <b>to</b> 11:00 AM <br /><b>Meeting Type</b> B = Beginners meeting
<br />
<br />
<b>Thursdays From</b> 10:00 AM <b>to</b> 11:00 AM <br /><b>Meeting Type</b> BB = Big Book meeting
<br />
<br />
<b>Fridays From</b> 10:00 AM <b>to</b> 11:00 AM <br /><b>Meeting Type</b> S = Step meeting
<br />
<br />
<b>Tuesdays From</b> 10:00 AM <b>to</b> 11:00 AM <br /><b>Meeting Type</b> OD = Open Discussion meeting
<br />
<br />
</td>
<td style="border-bottom:1px solid #dedede; width:90px; ">
<a href="getdirections.cfm?meetingid=36" class="GetDirections">Get Directions</a>
</td>
</tr>
`
Insert cell
tr1.split('</td>')
Insert cell
metadata = tr1.split('</td>')[0].replaceAll('\t', '')
Insert cell
metadata.split(/>|</)
Insert cell
locationName = metadata.split(/>|</)[6]
Insert cell
meetingName = metadata.split(/>|</)[12]
Insert cell
streetAddress = metadata.split(/>|</)[16].split(/\t|\n/)[1].trim().replaceAll(',', '')
Insert cell
streetAddress2 = metadata.split(/>|</)[18].split(' ')
Insert cell
streetAddress2b = metadata.split(/>|</)[18].trim().split(/\(|\)/)
Insert cell
crossStreet = streetAddress2b[1]
Insert cell
stateName = streetAddress2[streetAddress2.length-2].trim()
Insert cell
zipCode = streetAddress2[streetAddress2.length-1].trim()
Insert cell
metaInfo= []
Insert cell
metaInfo.push(locationName, meetingName, streetAddress, crossStreet, stateName, zipCode)
Insert cell
metaInfoProp = ["Location Name", "Meeting Name", "Street Address", "Cross Streets", "State", "Zipcode"]
Insert cell
metaInfoCombo = []
Insert cell
metaInfoCombo.push(metaInfoProp, metaInfo)
Insert cell
meetingdata = tr1.split('</td>')[1].replaceAll('\t', '').replaceAll('<b>', '').replaceAll('</b>', '').replaceAll('<br />', '')
Insert cell
meetingDataSplit1 = meetingdata.split('\n')[3].trim().split(/\s/)
Insert cell
meetingDay1 = meetingDataSplit1[0]
Insert cell
meetingDataSplit2 = meetingdata.split('\n')[7].trim().split(/\s/)
Insert cell
meetingDataSplit3 = meetingdata.split('\n')[11].trim().split(/\s/)
Insert cell
meetingDataSplit4 = meetingdata.split('\n')[15].trim().split(/\s/)
Insert cell
meetingDay2 = meetingDataSplit2[0]
Insert cell
meetingDay3 = meetingDataSplit3[0]
Insert cell
meetingDay4 = meetingDataSplit4[0]
Insert cell
meetingDays = []
Insert cell
meetingDays.push(meetingDay1, meetingDay2, meetingDay3)
Insert cell
meetingDays.push(meetingDay4)
Insert cell
meetingStartTime1 = meetingDataSplit1[3].concat(' ', meetingDataSplit1[4])
Insert cell
meetingStartTime2 = meetingDataSplit2[3].concat(' ', meetingDataSplit2[4])
Insert cell
meetingStartTime3 = meetingDataSplit3[3].concat(' ', meetingDataSplit3[4])
Insert cell
meetingStartTime4 = meetingDataSplit4[3].concat(' ', meetingDataSplit4[4])
Insert cell
meetingStartTime = []
Insert cell
meetingStartTime.push(meetingStartTime1, meetingStartTime2, meetingStartTime3, meetingStartTime4)
Insert cell
meetingEndTime1 = meetingDataSplit1[6].concat(' ', meetingDataSplit1[7])
Insert cell
meetingEndTime2 = meetingDataSplit2[6].concat(' ', meetingDataSplit2[7])
Insert cell
meetingEndTime3 = meetingDataSplit3[6].concat(' ', meetingDataSplit3[7])
Insert cell
meetingEndTime4 = meetingDataSplit4[6].concat(' ', meetingDataSplit4[7])
Insert cell
meetingEndTime = []
Insert cell
meetingEndTime.push(meetingEndTime1, meetingEndTime2, meetingEndTime3, meetingEndTime4)
Insert cell
meetingType1 = meetingdata.split('\n')[3].split('Meeting Type ')[1].trim()
Insert cell
meetingType2 = meetingdata.split('\n')[7].split('Meeting Type ')[1].trim()
Insert cell
meetingType3 = meetingdata.split('\n')[11].split('Meeting Type ')[1].trim()
Insert cell
meetingType4 = meetingdata.split('\n')[15].split('Meeting Type ')[1].trim()
Insert cell
meetingType = []
Insert cell
meetingType.push(meetingType1, meetingType2, meetingType3, meetingType4)
Insert cell
compInfo = []
Insert cell
compInfo.push(metaInfoProp, metaInfo, meetingDays, meetingStartTime, meetingEndTime, meetingType)
Insert cell
meeting1 = []
Insert cell
meeting1.push(locationName, meetingName, streetAddress, crossStreet, stateName, zipCode, meetingDay1, meetingStartTime1, meetingEndTime1, meetingType1)
Insert cell
meeting2 = []
Insert cell
meeting2.push(locationName, meetingName, streetAddress, crossStreet, stateName, zipCode, meetingDay2, meetingStartTime2, meetingEndTime2, meetingType2)
Insert cell
meeting3 = []
Insert cell
meeting3.push(locationName, meetingName, streetAddress, crossStreet, stateName, zipCode, meetingDay3, meetingStartTime3, meetingEndTime3, meetingType3)
Insert cell
meeting4 = []
Insert cell
meeting4.push(locationName, meetingName, streetAddress, crossStreet, stateName, zipCode, meetingDay4, meetingStartTime4, meetingEndTime4, meetingType4)
Insert cell
array_meetingsAll = []
Insert cell
array_meetingsAll.push(meeting1, meeting2, meeting3, meeting4)
Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more