目录
01初识 Humanize
Humanize 是一个 Python 库,旨在将程序生成的数据转换为更加易读的格式。无论是将时间差转化为“5 分钟前”,还是将大数字转化为“1.2 百万”,Humanize 都能轻松搞定。它的 API 简单直观,非常适合需要对数据进行友好展示的场景。
为什么选择 Humanize?
-
人性化展示:将机器友好的数据转换为人类友好的格式。
-
简单易用:API 简单直观,上手容易。
-
功能强大:支持多种数据类型的转换,如时间、日期、数字等。
安装 Humanize
Humanize 的安装非常简单,只需要一行命令:
pip install humanize
02时间与日期的处理
时间差的展示
Humanize 可以将时间差转换为更自然的表达方式,例如“刚刚”、“5 分钟前”、“2 天前”等。
import humanize
from datetime import datetime, timedelta
# 现在的时间
now = datetime.now()
# 5 分钟前的时间
five_minutes_ago = now - timedelta(minutes=5)
print(humanize.naturaltime(five_minutes_ago)) # 输出:5 minutes ago
# 2 天前的时间
two_days_ago = now - timedelta(days=2)
print(humanize.naturaltime(two_days_ago)) # 输出:2 days ago
日期的展示
Humanize 也可以将日期转换为更友好的格式,例如“2023 年 1 月 1 日”。
from datetime import date
# 今天的日期
today = date.today()
print(humanize.naturaldate(today)) # 输出:today
# 过去的日期
past_date = date(2022, 12, 25)
print(humanize.naturaldate(past_date)) # 输出:Dec 25 2022
03数字的处理
数字的单位转换
Humanize 可以将大数字转换为更易读的格式,例如“1.2 百万”、“3.4 亿”。
# 大数字的转换
big_number = 1234567
print(humanize.intword(big_number)) # 输出:1.2 million
# 更大的数字
bigger_number = 1234567890
print(humanize.intword(bigger_number)) # 输出:1.2 billion
数字的精确度控制
Humanize 还可以控制数字的小数点精度,使其更符合实际应用的需求。
# 小数点精度控制
precise_number = 12345.6789
print(humanize.fractional(precise_number, ndigits=2)) # 输出:12,345.68
数字的千位分隔符
Humanize 可以为大数字添加千位分隔符,使其更易读。
# 千位分隔符
large_number = 1234567890
print(humanize.intcomma(large_number)) # 输出:1,234,567,890
04文件大小的处理
文件大小的展示
Humanize 可以将文件大小转换为更友好的格式,例如“10 MB”、“2.3 GB”。
# 文件大小的转换
file_size = 1024 * 1024 * 10 # 10 MB
print(humanize.naturalsize(file_size)) # 输出:10.0 MB
# 更大的文件
larger_file_size = 1024 * 1024 * 1024 * 2.3 # 2.3 GB
print(humanize.naturalsize(larger_file_size)) # 输出:2.3 GB
05应用场景与实战案例
博客系统中的时间展示
在博客系统中,我们经常需要展示文章的发布时间。如果使用 Humanize,可以让时间展示更加人性化。
from datetime import datetime, timedelta
import humanize
# 模拟文章发布时间
publish_time = datetime.now() - timedelta(hours=3)
# 使用 Humanize 转换时间
friendly_time = humanize.naturaltime(publish_time)
print(f"文章发布时间:{friendly_time}") # 输出:3 hours ago
电商系统中的销量展示
在电商系统中,商品销量通常是一个大数字。使用 Humanize 可以将销量转换为更易读的格式。
import humanize
# 模拟商品销量
sales = 1234567
# 使用 Humanize 转换销量
friendly_sales = humanize.intword(sales)
print(f"商品销量:{friendly_sales}") # 输出:1.2 million
文件管理系统中的文件大小展示
在文件管理系统中,文件大小的展示非常重要。使用 Humanize 可以将文件大小转换为更友好的格式。
import humanize
# 模拟文件大小
file_size = 1024 * 1024 * 50 # 50 MB
# 使用 Humanize 转换文件大小
friendly_file_size = humanize.naturalsize(file_size)
print(f"文件大小:{friendly_file_size}") # 输出:50.0 MB
06扩展与自定义
自定义时间格式
Humanize 允许我们自定义时间格式,使其更符合特定需求。
import humanize
from datetime import datetime, timedelta
# 自定义时间格式
def custom_time_format(delta):
if delta < timedelta(minutes=1):
return "just now"
elif delta < timedelta(hours=1):
return f"{delta.seconds // 60} minutes ago"
elif delta < timedelta(days=1):
return f"{delta.seconds // 3600} hours ago"
else:
return f"{delta.days} days ago"
# 注册自定义时间格式
humanize.i18n.activate("en")
humanize.time.naturaltime = custom_time_format
# 测试自定义时间格式
now = datetime.now()
one_hour_ago = now - timedelta(hours=1)
print(humanize.naturaltime(one_hour_ago)) # 输出:1 hours ago
本地化支持
Humanize 支持多语言和本地化,让你的应用更加国际化。
import humanize
from datetime import datetime, timedelta
# 激活中文
humanize.i18n.activate("zh_CN")
# 测试中文输出
now = datetime.now()
two_days_ago = now - timedelta(days=2)
print(humanize.naturaltime(two_days_ago)) # 输出:2 天前
07结语
今天我和各位靓仔们一同探索了 Humanize 这个神奇的 Python 库。从基础操作到高级应用,再到实际案例,相信你已经对它有了全面的了解和掌握。Humanize 不仅让数据展示变得更加人性化,还让我们的编码过程更加愉快。
希望你能将这些知识应用到实际项目中,提升用户体验,享受数据处理的乐趣。编程不仅是一种技能,更是一门艺术。愿你在数据的世界里不断探索,成为一个真正的“数据艺术家”!
httpcore,一个小巧灵活的 python 库-CSDN博客 |
Python爬虫如何搞定动态Cookie?小白也能学会!-CSDN博客 |
Python魔法方法__call__深入详解-CSDN博客 |