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

终端中使用Python的tabulate展示含长文本的pandas dataframe如何截断文本?

解决tabulate展示长文本排版问题的方法

可以通过先截断pandas DataFrame中的长文本内容,再用tabulate展示,就能解决排版混乱的问题,具体实现如下:

方法1:固定长度截断文本

先定义一个文本截断函数,将每个单元格的内容限制在指定长度内,超出部分用省略号替代,再应用到整个DataFrame上。

import pandas as pd
from tabulate import tabulate

def truncate_text(text, max_length=20):
    # 统一转成字符串,兼容非文本类型数据
    str_content = str(text)
    if len(str_content) > max_length:
        return str_content[:max_length] + "..."
    return str_content

# 示例DataFrame(替换成你的实际数据)
df = pd.DataFrame({
    "商品名称": ["XX品牌新款多功能智能扫地机器人全自动拖地吸尘一体机", "迷你便携无线蓝牙耳机"],
    "商品描述": ["这款扫地机器人支持AI导航、自动回充、多种清洁模式,能覆盖家庭各个角落,解决日常清洁难题", "超长续航,音质清晰,佩戴舒适"]
})

# 对所有单元格应用截断函数
truncated_df = df.applymap(truncate_text, max_length=18)

# 用tabulate格式化输出
print(tabulate(truncated_df, headers="keys", tablefmt="grid"))

运行后输出的表格会自动截断长文本,保持排版整齐。

方法2:适配终端宽度动态截断

如果想让表格更贴合终端窗口大小,可以先获取终端宽度,再动态计算每列的最大显示长度:

import pandas as pd
from tabulate import tabulate
import os

def truncate_text(text, max_length=20):
    str_content = str(text)
    if len(str_content) > max_length:
        return str_content[:max_length] + "..."
    return str_content

df = pd.DataFrame({
    "商品名称": ["XX品牌新款多功能智能扫地机器人全自动拖地吸尘一体机", "迷你便携无线蓝牙耳机"],
    "商品描述": ["这款扫地机器人支持AI导航、自动回充、多种清洁模式,能覆盖家庭各个角落,解决日常清洁难题", "超长续航,音质清晰,佩戴舒适"]
})

# 获取终端宽度,计算每列可用长度(预留间距)
terminal_width = os.get_terminal_size().columns
col_count = len(df.columns)
# 每列预留4个字符的间距(表格边框和空隙)
col_max_length = (terminal_width // col_count) - 4

truncated_df = df.applymap(lambda x: truncate_text(x, max_length=col_max_length))
print(tabulate(truncated_df, headers="keys", tablefmt="grid"))

这样表格会根据终端宽度自动调整文本截断长度,适配不同大小的终端窗口。

内容的提问来源于stack exchange,提问作者Shahin Ramezanzade

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 14:45:58