目录
01初识 Humanize
为什么选择 Humanize?
安装 Humanize
02时间与日期的处理
时间差的展示
日期的展示
03数字的处理
数字的单位转换
数字的精确度控制
数字的千位分隔符
04文件大小的处理
文件大小的展示
05应用场景与实战案例
博客系统中的时间展示
电商系统中的销量展示
文件管理系统中的文件大小展示
06扩展与自定义
自定义时间格式
本地化支持
07结语
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博客 |