Вы можете использовать понимание вложенного списка, чтобы правильно преобразовать таблицу в список списков, который затем можно легко записать в файл CSV:
import csv, requests, re
from bs4 import BeautifulSoup as soup
d = soup(requests.get('https://www.totalcorner.com/match/schedule/20190305').text, 'html.parser')
table = d.find('table', {'id':'inplay_match_table'})
_headers, _data = [i.text for i in table.find_all('th')], [[i.text for i in b.find_all('td')] for b in table.find_all('tr')[1:]]
headers, data = [re.sub('\n+', '', i) for i in _headers if i], [list(filter(None, [re.sub('\n+', '', i) for i in b if i])) for b in _data[2:]]
with open('totalcorner_results.csv', 'w') as f:
write = csv.writer(f)
write.writerows([headers, *data])
Вывод (Лучшие восемь результатов из-за ограничения количества символов в SO):
League,Time,Home,Score,Away,Handicap,Corner,Goal Line,Tips,Dangerous Attack,Shots,Live Events,Analysis
Mexico Liga MX Femenil,00:00,Full,1Toluca Women,1 - 1,Club America Women21,+0.5,4 - 4(2-3),2.75 1.25 ,6.7-13.2,81 - 6037 - 33,20 - 811 - 4,C.O.L.
Argentina Nacional B,00:05,Full,3Sarmiento,1 - 1,CD Moron5,-0.75,5 - 3(4-2),2.0 0.75 ,62 - 6232 - 23,11 - 108 - 4,C.O.L.
Ecuador Campeonato Nacional,00:15,Full,[10]Universidad Catolica Del Ecuador,6 - 0,Fuerza Amarilla SC[13]1,-1.25,11 - 0(7-0),2.5 1.25 ,88 - 2243 - 10,23 - 512 - 4,C.O.L.
Argentina Primera Division,00:30,Full,5CA Aldosivi,0 - 1,Defensa y Justicia4,+0.25,3 - 6(1-2),1.75 0.75 ,Corner Over6.6-12.7,82 - 8836 - 46,13 - 96 - 6,C.O.L.
Peru Primera Division,01:00,Full,2[14]Sport Huancayo,0 - 3,Academia Deportiva Cantolao[17]2,-1.25,8 - 2(2-0),2.75 1.0 ,7.3-13.9,106 - 4547 - 19,12 - 56 - 1,C.O.L.
Colombia Primera A,01:00,Full,12Atletico Huila,1 - 2,Alianza Petrolera31,-0.25,3 - 4(1-4),2.0 0.75 ,5.6-12.3,47 - 5017 - 31,6 - 82 - 3,C.O.L.
Mexico Liga MX Femenil,01:00,Full,2Chivas Guadalajara Women,1 - 2,Atlas Women2,-0.25,2 - 2(0-0),2.5 1.0 ,6.1-11.8,49 - 7118 - 32,6 - 143 - 8,C.O.L.