Python - Humanize 包



Python 的Humanize 包是一个专门用于将数值、日期、时间和文件大小转换为更易于人类理解的格式的库。

  • 此包对于创建用户友好的界面和可读性强的报告至关重要,在这些报告中,数据解释需要快速且直观。
  • Humanize 包的主要目标是弥合原始数据和人类理解之间的差距。

尽管计算机和数据库擅长处理原始数值数据,但这些格式对于人类来说可能难以快速理解。Humanize 包通过将这些数据点转换为更直观且用户友好的格式来解决此问题。

Humanize 包的安装

要在 Python 中安装 humanize 包,我们可以使用 pip,它是 Python 的标准包管理器。以下代码必须在命令行或终端中运行才能安装 Humanize 包:

pip install humanize

安装后,我们可以通过运行 Python 解释器并使用以下代码导入 Humanize 包来验证 humanize 是否已正确安装:

import humanize

Humanize 包中的不同实用程序

Python 中的Humanize 包提供各种实用程序,通过增强可用性和理解力将数据转换为人类可读的格式。让我们详细探讨 humanize 包提供的不同实用程序:

数字实用程序

Python 的 Humanize 包提供多个数字实用程序,这些实用程序可以提高数值数据的可读性和理解力。这些实用程序将数字转换为对人类来说更自然和更容易理解的格式。

整数格式化

整数格式化实用程序将大整数转换为带有逗号的字符串,以提高可读性。以下是应用整数格式化实用程序的示例:

import humanize
print(humanize.intcomma(123456))  

输出

123,456

整数文字表示

整数文字表示将大整数转换为其文字表示,以便于理解,尤其对于非常大的数字。以下是它的示例:

import humanize
print(humanize.intword(12345678908545944))    

输出

12.3 quadrillion

序数

序数将整数转换为其序数形式。例如,1 将显示为 1st,2 显示为 2nd。以下是将 3 转换为 3rd 的示例:

import humanize
print(humanize.ordinal(3))   

输出

3rd

AP 数字

这些将整数转换为其对应的文字。以下为示例:

import humanize
print(humanize.apnumber(9))    

输出

nine

分数单位

这将小数转换为分数,以实现更直观的表示。以下是示例:

import humanize
print(humanize.fractional(0.5))     

输出

1/2

文件大小实用程序

正如我们已经知道的那样,Python 中的 humanize 包提供多个实用程序,其中文件大小实用程序是专门设计用于将原始字节值转换为人类可读的文件大小的实用程序。

这些实用程序通过将文件大小转换为更易于阅读和解释的格式来帮助理解文件大小。以下是 humanize 包中提供的文件大小实用程序的详细概述:

使用 naturalsize() 格式化文件大小

naturalsize() 函数是将文件大小转换为人类可读格式的主要工具。它会根据提供的大小自动选择合适的单位,例如字节、KB、MB、GB。

语法

以下是 Python Humanize 包的文件大小实用程序中 naturalsize() 函数的语法:

humanize.naturalsize(value,binary,gnu,format)

参数

以下是 python humanize 包中 naturalsize() 函数的参数:

  • value: 以字节为单位的文件大小。
  • binary: 布尔型标志,指示是否使用二进制单位。默认值为 False。
  • gnu: 布尔型标志,指示是否使用 GNU 风格的输出,默认值为 False。
  • format: 指定输出格式的字符串。默认值为 "%.1f"。

示例

以下是 Python 中使用 humanize 包的 naturalsize() 的示例:

import humanize

# Default usage with decimal units
file_size = 123456789
print(f"File size: {humanize.naturalsize(file_size)}")  

# Using binary units
print(f"File size (binary): {humanize.naturalsize(file_size, binary=True)}")  

# Using GNU-style prefixes
print(f"File size (GNU): {humanize.naturalsize(file_size, gnu=True)}")  

# Custom format
print(f"File size (custom format): {humanize.naturalsize(file_size, format='%.2f')}")  

以下是输出:

File size: 123.5 MB
File size (binary): 117.7 MiB
File size (GNU): 117.7M
File size (custom format): 123.46 MB

日期时间实用程序

Python 中的 Humanize 包提供了一些实用程序,用于使日期和时间更易于阅读。这些实用程序将日期时间对象转换为更易于人类理解的格式,例如相对时间、自然日期等等。以下是 humanize 包提供的日期和时间实用程序的详细概述:

自然时间

自然时间 将日期时间对象转换为人类可读的相对时间,例如“两天前”、“3小时前”。以下是自然时间的示例:

import humanize
from datetime import datetime, timedelta

past_date = datetime.now() - timedelta(days=2)
print(humanize.naturaltime(past_date)) 

输出

2 days ago

自然日期

自然日期 将特定日期格式化为可读的格式,例如“2024年7月11日”。以下是一个示例:

import humanize
from datetime import datetime
some_date = datetime(2022, 7, 8)
print(humanize.naturaldate(some_date))

输出

Jul 08 2022

自然日

自然日 通过考虑今天的日期来提供日期的人类可读表示,以实现上下文相关性,例如“今天”、“明天”、“昨天”等。以下是它的示例:

import humanize
from datetime import datetime, timedelta 
today = datetime.now()
tomorrow = today + timedelta(days=1)
print(humanize.naturalday(today))      
print(humanize.naturalday(tomorrow))    

输出

today
tomorrow

精确时间差

精确时间差 将时间持续时间转换为人类可读的字符串,将其分解为天、小时、分钟和秒。以下是一个示例:

import humanize
from datetime import timedelta
duration = timedelta(days=2, hours=3, minutes=30)
print(humanize.precisedelta(duration))    

输出

2 days, 3 hours and 30 minutes

持续时间实用程序

Python 中的 humanize 包还包括持续时间实用程序,用于将持续时间(时间间隔)转换为人类可读的格式。这些实用程序有助于以用户易于理解和有意义的方式呈现持续时间。以下是 humanize 包提供的持续时间实用程序概述:

使用 naturaldelta() 格式化持续时间

naturaldelta() 函数将时间增量(持续时间)转换为人类可读的字符串,以自然语言格式描述持续时间,例如“2小时前”、“3天后”等。

以下是使用 Python Humanize 包的 naturaldelta() 函数的示例:

from datetime import timedelta
import humanize

Using naturaldelta for time durations
delta1 = timedelta(days=3, hours=5)
print(f"Time duration: {humanize.naturaldelta(delta1)} from now")  

Example of a future duration (delta2)
delta2 = timedelta(hours=5)
print(f"Future duration: in {humanize.naturaldelta(delta2)}") 

Example of a past duration (delta3)
delta3 = timedelta(days=1, hours=3)
print(f"Past duration: {humanize.naturaldelta(delta3)} ago")  

输出

Time duration: 3 days from now
Future duration: in 5 hours
Past duration: a day ago
广告