鱼C论坛

 找回密码
 立即注册
查看: 2757|回复: 3

prettytable中有什么好办法将中文内容对齐

[复制链接]
发表于 2022-1-9 20:11:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
使用prettytable,发现有中文内容时,表格很难对齐,这个怎么办,请指教,谢谢。
import prettytable as pt

x = pt.PrettyTable()
x.field_names=(['书名', '作者', '定价', '库存数量'])
library = [
    {'bookname': '三体', 'author': '刘慈欣', 'price': 25, 'quality': 5},
    {'bookname': '流浪地球', 'author': '刘慈欣', 'price': 30, 'quality': 10},
    {'bookname': '雪中悍刀行', 'author': '风雪戏诸侯', 'price': 38, 'quality': 15},
    {'bookname': '风声鹤唳', 'author': '君不贱', 'price': 40, 'quality': 7},
    {'bookname': '两京十五日', 'author': '马伯庸', 'price': 28, 'quality': 12},
    {'bookname': '余罪', 'author': '常书欣', 'price': 70, 'quality': 33},
    {'bookname': '长安十二时辰', 'author': '马伯庸', 'price': 28, 'quality': 10}
]

for book in library:
    x.add_row(book.values())

print(x)
+--------------+------------+------+----------+
|     书名     |    作者    | 定价 | 库存数量 |
+--------------+------------+------+----------+
|     三体     |   刘慈欣   |  25  |    5     |
|   流浪地球   |   刘慈欣   |  30  |    10    |
|  雪中悍刀行  | 风雪戏诸侯 |  38  |    15    |
|   风声鹤唳   |   君不贱   |  40  |    7     |
|  两京十五日  |   马伯庸   |  28  |    12    |
|     余罪     |   常书欣   |  70  |    33    |
| 长安十二时辰 |   马伯庸   |  28  |    10    |
+--------------+------------+------+----------+

Process finished with exit code 0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-1-9 21:18:48 | 显示全部楼层
中文输出很难对齐的,可以自己写方法,没有很难,不用另外下载模组:
names = ['书名', '作者', '定价', '库存数量']
library = [
    {'bookname': '三体', 'author': '刘慈欣', 'price': 25, 'quality': 5},
    {'bookname': '流浪地球', 'author': '刘慈欣', 'price': 30, 'quality': 10},
    {'bookname': '雪中悍刀行', 'author': '风雪戏诸侯', 'price': 38, 'quality': 15},
    {'bookname': '风声鹤唳', 'author': '君不贱', 'price': 40, 'quality': 7},
    {'bookname': '两京十五日', 'author': '马伯庸', 'price': 28, 'quality': 12},
    {'bookname': '余罪', 'author': '常书欣', 'price': 70, 'quality': 33},
    {'bookname': '长安十二时辰', 'author': '马伯庸', 'price': 28, 'quality': 10}
]

a, b, c, d = names
print("+----------------+------------+------+----------+")
print(f"| {a:^12} | {b:^8} | {c:^2} | {d:^4} |")
print("+----------------+------------+------+----------+")
for book in library:
    a, b, c, d = book.keys()
    print(f"| {book[a]:^{14 - len(book[a])}} | {book[b]:^{10 - len(book[b])}} | {book[c]:^4} | {book[d]:^8} |")
print("+----------------+------------+------+----------+")
+----------------+------------+------+----------+
|      书名      |    作者    | 定价 | 库存数量 |
+----------------+------------+------+----------+
|      三体      |   刘慈欣   |  25  |    5     |
|    流浪地球    |   刘慈欣   |  30  |    10    |
|   雪中悍刀行   | 风雪戏诸侯 |  38  |    15    |
|    风声鹤唳    |   君不贱   |  40  |    7     |
|   两京十五日   |   马伯庸   |  28  |    12    |
|      余罪      |   常书欣   |  70  |    33    |
|  长安十二时辰  |   马伯庸   |  28  |    10    |
+----------------+------------+------+----------+
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-1-9 21:48:40 From FishC Mobile | 显示全部楼层
本帖最后由 hrpzcf 于 2022-1-9 21:57 编辑

换个控制台运行,在pycharm上中文对齐不好,在cmd或者powershell中中文对齐比较好,windows terminal也不错。
如果一定要在编辑器里运行,vscode的集成终端也不错。

vscode集成终端:
屏幕截图 2022-01-09 215528.png



Windows Terminal:
屏幕截图 2022-01-09 215623.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-1-12 11:01:29 | 显示全部楼层
hrpzcf 发表于 2022-1-9 21:48
换个控制台运行,在pycharm上中文对齐不好,在cmd或者powershell中中文对齐比较好,windows terminal也不错 ...

谢谢。看来还是开发环境的问题,不纠结了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-5 21:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表