Python - 人性化软件包



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

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

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

安装 Humanize 软件包

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

pip install humanize

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

import humanize

Humanize 包中的不同实用程序

Python 中的 Humanize 包提供了广泛的实用程序,通过增强可用性和理解性将数据转换为人类可读的格式。让我们详细探讨一下 humanize package 提供的不同实用程序 -

Number Utilities

Python 中的 Humanize 包提供了多个实用程序,可增强数值数据的可读性和理解性。这些实用程序将数字转换为人类更自然和更容易理解的格式。

整数格式

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


import humanize
print(humanize.intcomma(123456)) 	

输出

123,456

整数字表示

Integer Word Representation 将大整数转换为它们的单词表示形式,以便于理解,尤其是对于非常大的数字。下面是它的示例 -


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 包提供了几个实用程序,其中包括 File Size Utilities 是一种专门设计用于将原始字节值转换为人类可读文件大小的实用程序。

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

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

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

语法

以下是 Python Humanize 包的 File Size Utilities 的 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 软件包提供的日期和时间实用程序的详细概述 -

自然时间

自然时间将日期时间对象转换为人类可读的相对时间,例如 2 天前、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

精确增量

Precise Delta 通过分解为天、小时、分钟和秒,将持续时间转换为人类可读的字符串。这是它的示例 -


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

Duration 实用程序

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

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

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

以下是使用 Python Humanize Package 的 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