Humanize,一个很有人情味的 Python 库

目录

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博客

 

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

图灵学者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值