## Monday, 5 October 2015

### Tide Indicator Pi Project #5 - Parsing a months worth of tide data into different lists

Today I learned to use

`list.extend([item[1],item[2]])`

to split the parsed tide data to different lists. :-)

full code below.

``````#A python program to import tide data from a portsofjersey website
#tidenow.py
#It pulls the data in from the tide site, a month at a time
#It looks for the class headers associated with date,time and height information
#and then creates lists of these data

import urllib2
from bs4 import BeautifulSoup
from time import sleep
import datetime as dt

#open site and grab html

soup = BeautifulSoup(rawhtml, "html.parser")

#get the tide data (it's all in 'td' tags)

rawtidedata = soup.findAll('td')

#get just the month and year (it's in the 1st 'h2' tag on the page)

rawmonthyear = soup.findAll('h2')[0].get_text()
print ('Month and Year: ', rawmonthyear)

#strip the html and parse it all to one big list

n=0
parsedtidedata=[]
for i in rawtidedata:
parsedtidedata.append(rawtidedata[n].get_text())
# print (parsedtidedata[n]) #leave in for debugging for now
n += 1

#create lists for each class of data

tidetimes=[]
tideheights=[]
tideday=[]

#extract data to each list (there are 10 data items for each day)

lastdayofmonth=int(parsedtidedata[-10])

for n in range(0,lastdayofmonth*10,10):

tideday.append(parsedtidedata[n])
tidetimes.extend([parsedtidedata[n+1],parsedtidedata[n+3],parsedtidedata[n+5],parsedtidedata[n+7]])
tideheights.extend([parsedtidedata[n+2],parsedtidedata[n+4],parsedtidedata[n+6],parsedtidedata[n+8]])

print('data for the 1st of the month')
n=0
print tideday[n]
print tidetimes[n:n+4]
print tideheights[n:n+4]
``````