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
廣告