Skip to content

Instantly share code, notes, and snippets.

@etdecode
Created November 19, 2024 20:00
Show Gist options
  • Select an option

  • Save etdecode/5db44c352aced94fcfcf5b9bc43dd44a to your computer and use it in GitHub Desktop.

Select an option

Save etdecode/5db44c352aced94fcfcf5b9bc43dd44a to your computer and use it in GitHub Desktop.
import requests
from bs4 import BeautifulSoup as bs
url = "google doc with a 3 rows table containing (x, ascii char, y)"
def google_doc_table_finder(url):
response = requests.get(url)
html_content = response.text
soup = bs(html_content,'html.parser')
table = soup.find('table')
return table
def table_parser(table):
data = []
for row in table.find_all('tr')[1:]:
cells = row.find_all('td')
x = int(cells[0].get_text(strip=True))
y = int(cells[2].get_text(strip=True))
ascii_char = (cells[1].get_text(strip=True))
ascii_code = ord(ascii_char)
data.append((x,ascii_code,y))
return data
def order_printer_line(data):
ordered_data = sorted(data, key=lambda d:d[2], reverse=True)
return ordered_data
def get_max_y(data):
max_y = data[0][-1]
return max_y
def line_printer(data, line_number):
current_line_data = [point for point in data if point[2] == target_y]
max_x = max(point[0] for point in data)
line = [' '] * (max_x + 1)
for point in current_line_data:
x, ascii_code, y = point
line[x] = chr(ascii_code) if ascii_code !=32 else ' '
print(''.join(line))
table1 = google_doc_table_finder(url)
parsed = table_parser(table1)
ordered = order_printer_line(parsed)
maxed_y = get_max_y(ordered)
target_y = maxed_y
while target_y +1 != 0:
line_printer(ordered, target_y)
target_y = target_y -1
Examples
<table class="c5"><tr class="c8"><td class="c3" colspan="1" rowspan="1"><p class="c0"><span class="c1">x-coordinate</span></p></td><td class="c2" colspan="1" rowspan="1"><p class="c0"><span class="c1">Character</span></p></td><td class="c3" colspan="1" rowspan="1"><p class="c0"><span class="c1">y-coordinate</span></p></td></tr><tr class="c4"><td class="c3" colspan="1" rowspan="1"><p class="c0"><span class="c1">93</span></p></td><td class="c2" colspan="1" rowspan="1"><p class="c0"><span class="c1">░</span></p></td><td class="c3" colspan="1" rowspan="1"><p class="c0"><span class="c1">5</span></p></td></tr><tr class="c4"><td class="c3" colspan="1" rowspan="1"><p class="c0"><span class="c1">2</span></p></td><td class="c2" colspan="1" rowspan="1"><p class="c0"><span class="c1">░</span></p></td><td class="c3" colspan="1" rowspan="1"><p class="c0"><span class="c1">5</span></p></td></tr><tr class="c4"><td class="c3" colspan="1" rowspan="1"><p class="c0"><span class="c1">8</span></p></td><td class="c2" colspan="1" rowspan="1"><p class="c0"><span class="c1">░</span></p></td><td class="c3" colspan="1" rowspan="1"><p class="c0"><span class="c1">0</span></p></td></tr><tr class="c4"><td class="c3" colspan="1" rowspan="1"><p class="c0"><span class="c1">39</span></p></td><td class="c2" colspan="1" rowspan="1"><p class="c0"><span class="c1">█</span></p></td><td class="c3" colspan="1" rowspan="1"><p class="c0"><span class="c1">1</span></p></td></tr><tr class="c4"><td class="c3" colspan="1" rowspan="1"><p class="c0"><span class="c1">64</span></p></td><td class="c2" colspan="1" rowspan="1"><p class="c0"><span class="c1">░</span></p></td><td class="c3" colspan="1" rowspan="1"><p class="c0"><span class="c1">0</span></p></td></tr><tr class="c4"><td class="c3" colspan="1" rowspan="1"><p class="c0"><span class="c1">63</span></p></td><td class="c2" colspan="1" rowspan="1"><p class="c0"><span class="c1">█</span></p></td><td class="c3" colspan="1" rowspan="1"><p class="c0"><span class="c1">1</span></p></td></tr><tr class="c4"><td class="c3" colspan="1" rowspan="1"><p class="c0"><span class="c1">84</span></p></td><td class="c2" colspan="1" rowspan="1"><p class="c0"><span class="c1">█</span></p></td><td class="c3" colspan="1" rowspan="1"><p class="c0"><span class="c1">3</span></p></td></tr><tr class="c4"><td class="c3" colspan="1" rowspan="1"><p class="c0"><span class="c1">9</span></p></td><td class="c2" colspan="1" rowspan="1"><p class="c0"><span class="c1">█</span></p></td><td class="c3" colspan="1" rowspan="1"><p class="c0"><span class="c1">4</span></p></td></tr><tr class="c4"><td class="c3" colspan="1" rowspan="1"><p class="c0"><span class="c1">55</span></p></td><td class="c2" colspan="1" rowspan="1"><p class="c0"><span class="c1">█</span></p></td><td class="c3" colspan="1" rowspan="1"><p class="c0"><span class="c1">1</span></p></td></tr><tr class="c4"><td class="c3" colspan="1" rowspan="1"><p class="c0"><span class="c1">23</span></p></td><td class="c2" colspan="1" rowspan="1"><p class="c0"><span class="c1">█</span></p></td><td class="c3" colspan="1" rowspan="1"><p class=
[(93, 9617, 5), (2, 9617, 5), (8, 9617, 0), (39, 9608, 1), (64, 9617, 0), (63, 9608, 1), (84, 9608, 3), (9, 9608, 4), (55, 9608, 1), (23, 9608, 4), (91, 9608, 5), (21, 9608, 5), (79, 9617, 1), (65, 9617, 1), (52, 9608, 5), (49, 9617, 5), (24, 9617, 1), (42, 9617, 5), (6, 9608, 3), (24, 9617, 2), (0, 9608, 4), (65, 9608, 3), (74, 9617, 5), (36, 9617, 6), (22, 9608, 1), (62, 9617, 3), (24, 9617, 5), (58, 9608, 5), (35, 9608, 6), (55, 9617, 3), (20, 9608, 0), (88, 9608, 3), (46, 9608, 6), (8, 9608, 5), (13, 9608, 1), (76, 9608, 4), (54, 9608, 1), (2, 9608, 0), (91, 9608, 4), (34, 9608, 6), (80, 9608, 0), (12, 9608, 5), (14, 9617, 3), (1, 9608, 2), (67, 9617, 5), (93, 9617, 1), (48, 9608, 5), (79, 9608, 0), (13, 9608, 5), (39, 9608, 5), (48, 9617, 6), (12, 9608, 3), (92, 9608, 5), (52, 9608, 4), (55, 9617, 2), (61, 9617, 5), (66, 9608, 4), (7, 9608, 6), (83, 9608, 4), (33, 9608, 0), (85,
[(36, 9617, 6), (46, 9608, 6), (48, 9617, 6), (32, 9608, 6), (19, 9608, 6), (17, 9608, 6), (67, 9608, 6), (0, 9608, 6), (43, 9608, 6), (83, 9608, 6), (16, 9608, 6), (70, 9608, 6), (68, 9617, 6), (66, 9608, 6), (53, 9617, 6), (8, 9617, 6), (21, 9608, 6), (3, 9608, 6), (27, 9608, 6), (73, 9617, 6), (85, 9617, 6), (51, 9608, 6), (91, 9608, 6), (93, 9617, 6), (65, 9608, 6), (28, 9608, 6), (22, 9617, 6), (20, 9608, 6), (79, 9608, 6), (93, 9617, 5), (91, 9608, 5), (52, 9608, 5), (42, 9617, 5), (24, 9617, 5), (8, 9608, 5), (67, 9617, 5), (13, 9608, 5), (92, 9608, 5), (72, 9608, 5), (0, 9608, 5), (27, 9608, 5), (77, 9608, 5), (84, 9608, 5), (54, 9617, 5), (65, 9608, 5), (10, 9617, 5), (1, 9608, 5), (78, 9608, 5), (22, 9608, 5), (73, 9608, 5), (59, 9608, 5), (28, 9617, 5), (40, 9608, 5), (23, 9608, 4), (76, 9608, 4), (52, 9608, 4), (83, 9608, 4), (84, 9608, 4), (59, 9608, 4), (1, 9608, 4), (61, 9608, 4), (62, 9617, 4), (40, 9608, 4), (38, 9608, 4), (58, 9608, 4), (14, 9617, 4), (85, 9617, 4), (74, 9608, 4), (12, 9608, 4), (57, 9608, 4), (65, 9608, 4), (27, 9608, 4), (53, 9608, 4), (39, 9608, 4), (28, 9617, 4), (6, 9608, 3), (62, 9617, 3), (88, 9608, 3), (12, 9608, 3), (77, 9617, 3), (38, 9608, 3), (1, 9608, 3), (76, 9608, 3), (2, 9608, 3), (3, 9608, 3), (86, 9608, 3), (53, 9608, 3), (8, 9617, 3), (92, 9608, 3), (32, 9608, 3), (28, 9608, 3), (30, 9608, 3), (66, 9617, 3), (13, 9608, 3), (34, 9617, 3), (0, 9608, 3), (83, 9608, 3), (52, 9608, 3), (22, 9608, 3), (27, 9608, 3), (89, 9608, 3), (59, 9617, 3), (24, 9617, 2), (55, 9617, 2), (61, 9608, 2), (41, 9617, 2), (28, 9617, 2), (22, 9608, 2), (60, 9608, 2), (84, 9608, 2), (40, 9608, 2), (27, 9608, 2), (23, 9608, 2), (64, 9608, 2), (10, 9617, 2), (77, 9608, 2), (91, 9608, 2), (65, 9617, 2), (0, 9608, 2), (58, 9617, 2), (14, 9617, 2), (74, 9608, 2), (75, 9617, 2), (83, 9608, 2), (63, 9608, 1), (79, 9617, 1), (24, 9617, 1), (13, 9608, 1), (93, 9617, 1), (9, 9608, 1), (85, 9617, 1), (53, 9608, 1), (62, 9608, 1), (8, 9608, 1), (41, 9608, 1), (73, 9608, 1), (72, 9608, 1), (57, 9617, 1), (83, 9608, 1), (15, 9617, 1), (56, 9608, 1), (91, 9608, 1), (92, 9608, 1), (10, 9617, 1), (61, 9608, 1), (77, 9608, 1), (14, 9608, 1), (64, 9617, 0), (2, 9608, 0), (79, 9608, 0), (56, 9617, 0), (19, 9608, 0), (18, 9608, 0), (22, 9617, 0), (43, 9608, 0), (15, 9608, 0), (42, 9608, 0), (71, 9608, 0), (6, 9608, 0), (93, 9617, 0), (41, 9608, 0), (48, 9617, 0), (46, 9608, 0), (31, 9608, 0), (27, 9608, 0), (72, 9608, 0), (30, 9608, 0), (17, 9608, 0), (29, 9608, 0), (92, 9608, 0), (85, 9617, 0), (1, 9608, 0), (7, 9608, 0), (3, 9608, 0), (62, 9608, 0)]
████████░ ████████░ ██████████░ ███████░ ██░ ███░ ███░ ███░ ██░ ██░
██░ ██░ ███░ ███░ ██░ ███░ ██░ ███░ ███░ ██░ ██░ ██░ ██░ ██░
██░ ██░ ██░ ██░ ██░ ███░ ██░ █████░ ███░ ██░██░ ██░ ██░
████████░ ██░ ██░ ████████░ ██░ ███░ ██░██░ ██░ ███░ ██████████░
██░ ██░ ██░ ██░ ██░ ███░ ██░██░ ██░██░ ██░██░ ██░ ██░
██░ ██░ ███░ ███░ ██░ ███░ ██░ ████░ ████░ ██░ ██░ ██░ ██░
████████░ ████████░ ██████████░ ███████░ ██░ ██░ ███░ ███░ ██░ ██░
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment