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

news2024/10/23 15:25:09

目录

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

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1843192.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Linux工具】yum软件包管理器与Vim编辑器的高效运用

目录 Linux 软件包管理器 YUM 什么是软件包 安装工具 rzsz 及注意事项 查看软件包 安装和卸载软件 安装软件 卸载软件 Linux 开发工具 编辑器 - Vim 使用 ​编辑 Vim 与 Vi 的区别 Vim 的基本概念 三种模式 Vim 的基本操作 操作尝试&#xff1a; Vim 命令集解释…

Windows更新报错 0xc1900101 0x30018 解决方案

卸载自带的电脑管家&#xff08;比如华硕、联想、华为等&#xff09; 通过禁用第三方驱动启动Windows&#xff08;winr 运行 msconfig&#xff09;&#xff0c;然后禁用掉第三方服务&#xff0c;重启系统。 检查更新&#xff0c;应该问题就能解决 记得重新运行msconfig&…

【机器学习】线性回归:从基础到实践的深度解析

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 线性回归&#xff1a;从基础到实践的深度解析引言一、线性回归基础1.1 定义与目…

Electron+vite+vuetify项目搭建

最近想用Electron来进行跨平台的桌面应用开发。同时想用vuetify作为组件&#xff0c;于是想搭建一个这样的开发环境。其中踩了不少坑&#xff0c;总是会出现各种的编译错误和问题&#xff0c;依赖的各种问题&#xff0c;搞了好久最终环境终于弄好可正常开发了。这里分享下快速搭…

最新OPPO 真我手机 一加手机 使用adb命令永久关闭系统更新教程

使用adb命令永久关闭系统更新 一、先了解手机系统二、Android 11 以下使用adb 命令永久关闭系统更新1、adb 官方下载2、小白开启 USB 调试模式教程&#xff08;熟手跳过&#xff09;三、Android 12 以上使用adb 命令永久关闭系统更新什么您还是不会弄&#xff01;赞赏我&#x…

git中的多人协作开发场景

✨前言✨ &#x1f4d8; 博客主页&#xff1a;to Keep博客主页 &#x1f646;欢迎关注&#xff0c;&#x1f44d;点赞&#xff0c;&#x1f4dd;留言评论 ⏳首发时间&#xff1a;2024年6月20日 &#x1f4e8; 博主码云地址&#xff1a;博主码云地址 &#x1f4d5;参考书籍&…

告别夏季粉尘螨虫困扰,这些空气净化器品牌你不能错过!

夏季来临&#xff0c;粉尘螨虫肆虐&#xff0c;对家居环境造成巨大威胁。俗话说&#xff1a;“病从口入&#xff0c;祸从口出。”夏季是粉尘和螨虫的活跃期&#xff0c;常规的清洁手段如吸尘、抹布擦拭等已无法彻底清除这些顽固的过敏源。尤其是在空调使用频繁的日子里&#xf…

民宿小程序在线预约系统开发,提高品牌影响力

在旅游业发展旺盛的当下&#xff0c;也带动了各地民宿的发展。在科技的支持下&#xff0c;民宿小程序得到了快速发展&#xff0c;凭借方便快捷的优势为大众带来新的体验。 民宿小程序的发展为用户提供了便捷的预订渠道&#xff0c;用户可以根据对房间的要求选择&#xff0c;能…

DNF安卓分离仅是开始:游戏厂商积极布局自有渠道,市场变革在即

毫无征兆&#xff0c;DNF手游今天突然宣布从各大安卓平台下架。 《地下城与勇士:起源》运营团队于6月19日发布声明&#xff0c;指出因合约到期&#xff0c;游戏将不再上架部分安卓平台的应用商店。然而&#xff0c;这一事件并非完全无迹可循。 早在2021年初&#xff0c;华为游…

崖山数据库一体机 | 高性能、高可靠、智能化运维的一站式数据库解决方案

国产软硬件融合难&#xff1f; 性能调优挑战重重&#xff1f; 兼容性问题频发&#xff1f; 软硬件单独购买TCO成本高&#xff1f; .... 面对数据管理的这些挑战 数据库一体机的出现 提供了全新的解决方案 就在刚结束的浪潮信息元脑中国行-广州站活动现场上&#xff0c;崖…

搭建预约咨询小程序,高效便捷新选择

一、预约咨询小程序是什么&#xff1f; 预约咨询小程序是一款适用于各种生活场景包括医疗、保洁、宠物护理、法律等方面的预约咨询类小程序。 二、这款小程序有什么亮点优势&#xff1f; 预约咨询小程序适用场景广泛&#xff0c;无论是心理咨询、法律咨询&#xff0c;还是宠物…

Spring AI 介绍以及与 Spring Boot 项目整合

Spring AI 项目旨在简化使用 Spring Boot 开发包含人工智能功能的应用程序&#xff0c;提供抽象和支持多种模型提供商及矢量数据库提供商。 Spring AI 的功能特点 支持主流模型提供商&#xff1a;如 OpenAI、Microsoft、Amazon、Google 和 Huggingface 等。支持多种模型类型&a…

springboot大学生体质测试管理系统 LW+PPT+源码

3 系统需求分析 3.1 系统可行性分析及目的 3.1.1 系统设计目的 如今我们已经越来越离不开互联网给我们带来的生活便利&#xff0c;希望大学生体质测试管理系统也能通过活泼、清新的界面给用户提供简单的与互动的网站。方便用户在平时利用有限的时间对测试信息进行查看&#xf…

crontab异常任务删除不了,清除挖矿病毒

1、事件原因 当天发现服务器访问速度异常缓慢&#xff0c;通过top命令查看系统资源使用情况&#xff0c;发现名为systemd-mont&#xff08;可能是一个误写或自定义的进程名&#xff09;的两个异常线程占用了大量的CPU资源&#xff0c;几乎导致CPU满载。 2、查找问题 为了确定这…

椭圆的矩阵表示法

椭圆的矩阵表示法 flyfish 1. 标准几何表示法 标准几何表示法是通过椭圆的几何定义来表示的&#xff1a; x 2 a 2 y 2 b 2 1 \frac{x^2}{a^2} \frac{y^2}{b^2} 1 a2x2​b2y2​1其中&#xff0c; a a a 是椭圆的长半轴长度&#xff0c; b b b 是椭圆的短半轴长度。 2.…

JavaBean与内省,注解的语法及使用

JavaBean Javabean 是 Java 中最重要的一个可重用的组件(减少代码重复,可重用,封装业务逻辑,封装数据).组件:一些符合某种规范的类,可以完成特定的功能. JavaBean 的规范要求: 使用 public 修饰.字段私有化.提供 get/set 方法.公共的无参数的构造器.(使用反射,使用字节码对象.n…

记录一次递归查询导致的 java.lang.StackOverflowError: null

问题截图&#xff1a; 由于作者使用递归统计信息&#xff0c;刚开始这个接口运行得正常&#xff0c;但是上线运行一段时间后接口就出现了&#xff0c;如图的栈溢出错误。可以看出确实是堆栈溢出了&#xff0c;解决栈溢出目前只有两种方式&#xff1a; 第一种调大栈的大小&…

MySQL 离线安装客户端

1. 官方网址下载对应架构的安装包。 比如我的是centOs 7 x64。则需下载如图所示的安装包。 2. 安装 使用如下命令依次安装 devel , client-plugins, client. rpm -ivh mysql-community-*.x86_64.rpm --nodeps --force 在Linux系统中&#xff0c;rpm是一个强大的包管理工具&…

Java面试八股之Mybatis和JPA的区别

Mybatis和JPA的区别 Mybatis 和 JPA&#xff08;Java Persistence API&#xff09;是两种在 Java 应用程序中用于数据持久化的框架&#xff0c;它们各有特点和适用场景。下面是它们之间的一些主要区别&#xff1a; 映射方式&#xff1a; Mybatis 是半自动的 ORM 框架&#xf…

移植案例与原理 - HPM包描述文件bundle.json

发现各个子系统、组件、三方库目录下都添加了bundle.json&#xff0c;了解下该文件的用途、用法并快速记录下。 1、HPM Bundle的基本概念 Bundle是OpenHarmony中一个用来表示分发单元的术语&#xff0c;等同于包&#xff0c;一个Bundle中通常包含以下内容&#xff1a; 被分发…