欢迎访问宙启技术站
智能推送

在Python中使用tqdmtqdm_notebook()实现中文进度条的小技巧

发布时间:2023-12-24 14:51:09

在Python中,我们可以使用tqdm库来创建进度条。tqdm_notebook()函数特别适用于在Jupyter Notebook中显示进度条。然而,默认情况下,tqdm库仅支持英文文本的进度条,对于中文文本可能会出现乱码的情况。下面是一种可以解决这个问题的小技巧。

首先,我们需要使用一个中文进度条的模板,将其保存为一个字符串。然后,我们可以将这个字符串作为参数传递给tqdm库中的set_postfix()方法,来替换原来的进度条文本。

下面是一个示例代码,展示了如何使用tqdm_notebook()实现中文进度条:

from tqdm import tqdm_notebook

# 创建一个字符串模板作为进度条
progress_bar_template = '{"progress": "%s", "percentage": %.2f, "completed": %d, "total": %d}'

# 定义一个函数用来更新进度条
def update_progress_bar(progress, total):
    # 计算进度百分比
    percentage = (progress / total) * 100
    # 格式化进度条文本
    progress_bar_text = progress_bar_template % ('#' * int(percentage / 10), percentage, progress, total)
    # 显示进度条
    tqdm_notebook().set_postfix_str(progress_bar_text)

# 定义一个函数用来模拟任务的执行
def do_task():
    total = 100
    for i in range(total):
        # 执行任务
        # ...
        # 更新进度条
        update_progress_bar(i+1, total)

在上面的代码中,我们首先定义了一个进度条模板,其中包含了需要显示的信息,比如进度条图形、进度百分比、已完成的任务数和总任务数。然后,我们定义了一个函数update_progress_bar(),它接受两个参数:当前进度和总进度。函数内部使用这些参数计算出进度百分比,并调用tqdm_notebook()的set_postfix_str()方法来显示更新后的进度条。

最后,我们定义了一个do_task()函数来模拟任务的执行。在任务的每个迭代中,我们调用update_progress_bar()来更新进度条。

请注意,为了在Jupyter Notebook中正确显示中文文本,您可能需要设置以下导入语句:

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

在使用tqdm_notebook()显示中文进度条之前,需要先执行这两条语句来设置中文字体。

希望这个小技巧对您有所帮助!