我正在编写Python代码来显示商店中的商品......因为我还在学习,我想知道如何制作一个看起来与使用Texttable制作的表完全相同的表....
我的代码是
Goods = ['Book','Gold']
Itemid= [711001,711002]
Price= [200,50000]
Count= [100,2]
Category= ['Books','Jewelry']
titles = ['', 'Item Id', 'Price', 'Count','Category']
data = [titles] + list(zip(Goods, Itemid, Price, Count, Category))
for i, d in enumerate(data):
line = '|'.join(str(x).ljust(12) for x in d)
print(line)
if i == 0:
print('=' * len(line))
我的输出:
|Item Id |Price |Count |Category
================================================================
Book |711001 |200 |100 |Books
Gold |711002 |50000 |2 |Jewelry
我想要的输出:
+------+---------+-------+-------+-----------+
| | Item Id | Price | Count | Category |
+======+=========+=======+=======+===========+
| Book | 711001 | 200 | 100 | Books |
+------+---------+-------+-------+-----------+
| Gold | 711002 | 50000 | 2 | Jewelry |
+------+---------+-------+-------+-----------+
答案 0 :(得分:1)
您的代码正在使用string.join()
手动构建输出。你可以这样做,但这非常繁琐。改为使用字符串格式。
为了帮助你,这里有一行:
content_format = "| {Goods:4.4s} | {ItemId:<7d} | {Price:<5d} | {Count:<5d} | {Category:9s} |"
output_line = content_format.format(Goods="Book",ItemId=711001,Price=200,Count=100,Category="Books")
Texttable调整其单元格宽度以适合数据。如果你想做同样的事情,那么你必须将计算的字段宽度放在content_format
中,而不是像我在上面的例子中那样使用数字文字。再次,这是一个让你前进的例子:
content_format = "| {Goods:4.4s} | {ItemId:<7d} | {Price:<5d} | {Count:<5d} | {Category:{CategoryWidth}s} |"
output_line = content_format.format(Goods="Book",ItemId=711001,Price=200,Count=100,Category="Books",CategoryWidth=9)
但如果您已经知道如何使用Texttable执行此操作,为什么不使用它?您的评论说它在Python中不可用:不是,我只是使用pip下载了0.9.0版本。