You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从表格生成字符网格时输出倒置,求Python代码修复方案

问题

我需要将包含网格坐标与字符的表格转换为字符网格,目标是呈现大写字母F,但运行代码后输出的网格是倒置的。以下是我的实现代码:

import requests 
from bs4 import BeautifulSoup 

webpage_response = requests.get('https://docs.google.com/document/d/e/2PACX-1vRMx5YQlZNa3ra8dYYxmv-QIQ3YJe8tbI3kqcuC7lQiZm-CSEznKfN_HYNSpoXcZIV3Y_O3YoUB1ecq/pub')
webpage = webpage_response.content

soup = BeautifulSoup(webpage, 'html.parser') 
table = soup.find('table') 

rows = table.find_all('tr') 

data = []
for row in rows[1:]: 
    cells = row.find_all('td')
    character = cells[1].text.strip()
    x = cells[0].text.strip()
    y = cells[2].text.strip()
    data.append((character,x,y))

max_x = max(x for _,x,_  in data) 
max_y = max(y for _, _,y in data)

grid = [[' ' for _ in range(int(max_x) + 1)] for _ in range(int(max_y) + 1)]

for character, x, y in data:
    grid[int(y)][int(x)] = character

for row in grid:
    print(''.join(row))
解决方法

问题根源是坐标系方向不匹配:

  • 表格中的y坐标是从上到下递增的(比如字母F的顶部对应较小的y值,底部对应较大的y值)
  • 而Python列表的遍历打印是从第一个元素开始,也就是网格列表的第0行会显示在输出的最上方,相当于y轴方向与表格相反

有两种简单的修复方式:

方式一:填充网格时反转y坐标

修改填充网格的逻辑,用最大y值减去当前y值,实现坐标系对齐:

# 替换原填充代码
for character, x, y in data:
    grid[int(max_y) - int(y)][int(x)] = character

方式二:打印时反转网格列表

保持填充逻辑不变,打印时将网格列表反转:

# 替换原打印代码
for row in reversed(grid):
    print(''.join(row))

两种方法都能让输出的字母F恢复正确方向,核心是让表格的y轴顶部对应输出的视觉顶部。

内容的提问来源于stack exchange,提问作者Salem Maley

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 21:33:32