使用 Tabulate 打印表情符号时列宽不一致

问题描述 投票:0回答:1

我正在尝试使用

tabulate
将表情符号打印为表格,但没有获得正确的对齐方式。我该如何解决这个问题?

emojis = [['🍌', '🥕', '🥕', '🍎', '🍌', '🍎', '🦸'], 
          ['🍌', '🍎', '🚫', '🚫', '🍎', '🚫', '🍎'], 
          ['🥑', '🍎', '🥕', '🚫', '🚫', '🥑', '🚫'], 
          ['🥕', '🍎', '🥑', '🚫', '🍎', '🍎', '🥕'], 
          ['🥕', '🍌', '🚫', '🍎', '🥕', '🥕', '🍌'], 
          ['🚫', '🍎', '🥕', '🥑', '🥕', '🥕', '🍌'], 
          ['🧛', '🥑', '🚫', '🍎', '🥕', '🚫', '🥕']]
print(tabulate(emojis, tablefmt="fancy_grid"))

这是输出:

╒═══╤═══╤═══╤═══╤═══╤═══╤═══╕
│ 🍌 │ 🥕 │ 🥕 │ 🍎 │ 🍌 │ 🍎 │ 🦸 │
├───┼───┼───┼───┼───┼───┼───┤
│ 🍌 │ 🍎 │ 🚫 │ 🚫 │ 🍎 │ 🚫 │ 🍎 │
├───┼───┼───┼───┼───┼───┼───┤
│ 🥑 │ 🍎 │ 🥕 │ 🚫 │ 🚫 │ 🥑 │ 🚫 │
├───┼───┼───┼───┼───┼───┼───┤
│ 🥕 │ 🍎 │ 🥑 │ 🚫 │ 🍎 │ 🍎 │ 🥕 │
├───┼───┼───┼───┼───┼───┼───┤
│ 🥕 │ 🍌 │ 🚫 │ 🍎 │ 🥕 │ 🥕 │ 🍌 │
├───┼───┼───┼───┼───┼───┼───┤
│ 🚫 │ 🍎 │ 🥕 │ 🥑 │ 🥕 │ 🥕 │ 🍌 │
├───┼───┼───┼───┼───┼───┼───┤
│ 🧛 │ 🥑 │ 🚫 │ 🍎 │ 🥕 │ 🚫 │ 🥕 │
╘═══╧═══╧═══╧═══╧═══╧═══╧═══╛
python terminal emoji column-width tabulate
1个回答
0
投票

我相信目前没有解决方案,因为正如评论中所暗示的那样,每个操作系统/终端/字体呈现表情符号的方式都不同(请参见下面的示例)。如果您的应用程序允许,我的建议是将其导出为 SVG/HTML/Markdown/等,这会在渲染时强制严格的列边界,例如

print(tabulate(emojis, tablefmt="html"))

<table>
<tbody>
<tr><td>🍌</td><td>🥕</td><td>🥕</td><td>🍎</td><td>🍌</td><td>🍎</td><td>🦸</td></tr>
<tr><td>🍌</td><td>🍎</td><td>🚫</td><td>🚫</td><td>🍎</td><td>🚫</td><td>🍎</td></tr>
<tr><td>🥑</td><td>🍎</td><td>🥕</td><td>🚫</td><td>🚫</td><td>🥑</td><td>🚫</td></tr>
<tr><td>🥕</td><td>🍎</td><td>🥑</td><td>🚫</td><td>🍎</td><td>🍎</td><td>🥕</td></tr>
<tr><td>🥕</td><td>🍌</td><td>🚫</td><td>🍎</td><td>🥕</td><td>🥕</td><td>🍌</td></tr>
<tr><td>🚫</td><td>🍎</td><td>🥕</td><td>🥑</td><td>🥕</td><td>🥕</td><td>🍌</td></tr>
<tr><td>🧛</td><td>🥑</td><td>🚫</td><td>🍎</td><td>🥕</td><td>🚫</td><td>🥕</td></tr>
</tbody>
</table>

  • Android,Slack 代码块:

  • Windows、Slack 代码块:

  • Windows、Pycharm:

  • Linux、终端

© www.soinside.com 2019 - 2024. All rights reserved.