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

 

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

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

相关文章

一文学会消息中间件的基础知识

什么是消息队列 队列数据结构 我们都学习过数据结构与算法相关的内容,消息队列从数据结构来看,就是一个由链表或是数组构成的一个先进先出的数据容器。由链表实现还是数组实现都没关系,它只要满足数据项是先进先出的特点,那么就可以认为它是一个队列结构。队列是只允许在…

智能制造uwb高精度定位系统模块,飞睿智能3厘米定位测距芯片,无人机高速传输

在科技日新月异的今天&#xff0c;定位技术已经渗透到我们生活的方方面面。从手机导航到自动驾驶&#xff0c;再到无人机定位&#xff0c;都离不开精准的定位系统。然而&#xff0c;随着应用场景的不断拓展&#xff0c;传统的定位技术如GPS、WiFi定位等&#xff0c;因其定位精度…

Java:113-Spring Data JPA详解

Spring Data JPA详解 Spring Data Jpa 是应用于Dao层的⼀个框架&#xff0c;简化数据库开发的&#xff0c;作用和Mybatis框架⼀样&#xff0c;但是在使用方式和底层机制是有所不同的&#xff0c;最明显的⼀个特点&#xff0c;Spring Data Jpa 开发Dao的时候&#xff0c;很多场景…

天锐绿盾数据防泄密软件有哪些功能

天锐绿盾数据防泄密软件的功能丰富而全面&#xff0c;旨在从源头上保障企业数据的安全。以下是对其主要功能的归纳和介绍&#xff1a; www.drhchina.com 一、文件加密模块 透明加密&#xff1a;在不影响用户工作流程的前提下&#xff0c;对需要保护的文件进行自动加密处理。文…

别再这么起号了!TikTok小白起号误区,你中招了吗?

看过不少Tiktok新手的起号失败案例&#xff0c;总结下来就是以下这几个问题&#xff0c;今天结合一些个人起号心得给大家分享怎么成功在TK起号&#xff0c;希望对大家有所帮助。 手机/网络环境 首先我们要确保手机环境和网络环境没有问题&#xff0c;如果被TK判断出是非海外用户…

数据治理服务解决方案(35页WORD)

方案介绍&#xff1a; 本数据治理服务解决方案旨在为企业提供一站式的数据治理服务&#xff0c;包括数据规划、数据采集、数据存储、数据处理、数据质量保障、数据安全及合规等方面。通过构建完善的数据治理体系&#xff0c;确保企业数据的准确性、完整性和一致性&#xff0c;…

【Python】PySide6使用入门和注意事项

文章目录 前言关于PySide和PyQtQt Designerpyside6在vscode中ui文件转换兼容性问题主程序结构蓝牙协议初探&#xff08;应用层&#xff09; 前言 最近在开发一个带界面的软件&#xff0c;需要使用蓝牙&#xff0c;然后找到一个开源仓库使用的是Qt里面的Qbluetooth模块&#xff…

项目中根据excel文件生成json多语言文件

根据xlsx表格生成json 首先安装依赖创建translate.js文件local/index.ts执行node命令 首先安装依赖 pnpm install xlsx file-saver创建translate.js文件 /* eslint-disable no-useless-escape */ /* eslint-disable no-control-regex */ import fs from node:fs import path …

List实现类——ArrayList、LinkedList及迭代器(并发修改异常错误)源码分析

1、ArrayList本质及源码分析 两种情况&#xff1a;加一个和很多个 底层原理&#xff1a;elementData是底层数组的名字 再次满了的话&#xff0c;在扩容1.5倍 如果利用addAll一次添加多个元素&#xff0c;按实际元素数进行扩容 源码分析&#xff1a; 1、空参构造&#xff0c;…

STORM论文阅读笔记

这是篇NIPS2023的 world model 论文文章提出&#xff0c;WM的误差会在训练过程中积累从而影响policy的训练&#xff0c;向WM中加噪声可以改善这一点。其他的流程和IRIS差不多&#xff0c;差别在以下几点&#xff1a; image encoder&#xff0c;IRIS用的VQVAE, 本文用的是VAE&am…

看穿人性!现货白银交易的一些博弈心得

很多投资者认为现货白银交易最应该讲求的是交易技巧&#xff0c;但交易的技巧和套路是“死”的&#xff0c;行情走势却是“活”的&#xff0c;投资者需要在实践中不断地累积经验和总结心得&#xff0c;才能更加灵活地面对行情走势的变化&#xff0c;逐步达至盈利的理想彼岸。 无…

本地安装nightingale监控分析服务并发布公网详细流程

文章目录 前言1. Linux 部署Nightingale2. 本地访问测试3. Linux 安装cpolar4. 配置Nightingale公网访问地址5. 公网远程访问Nightingale管理界面6. 固定Nightingale公网地址 前言 本文主要介绍如何在本地Linux系统部署 Nightingale 夜莺监控并结合cpolar内网穿透工具实现远程…

Go基础编程 - 09 - 通道(channel)

通道&#xff08;channel&#xff09; 1. 声明2. channel的操作3. 无缓冲通道4. 有缓冲通道5. 如何优雅的从通道循环取值6. 单向通道7. 异常总结 上一篇&#xff1a;结构体 Go语言的并发模式&#xff1a;不要通过共享内存来通信&#xff0c;而应该通过通信来共享内存。 Go语言…

云原生周刊:Harbor v2.11 版本发布 | 2024.6.17

开源项目推荐 Descheduler Descheduler 是一个工具&#xff0c;可用于优化 Kubernetes 集群中 Pod 的部署位置。它可以找到可以移动的 Pod&#xff0c;并将其驱逐&#xff0c;让默认调度器将它们重新调度到更合适的节点上。 Prowler Prowler 是一款适用于 AWS、Azure、GCP …

js如何添加新元素到数组中

1.push方法 push() 方法可向数组的末尾添加一个或多个元素&#xff0c;并返回新的长度。这是向数组添加元素的最常用方法。 let arr [1, 2, 3]; arr.push(4); // 向数组末尾添加元素4 console.log(arr); // 输出: [1, 2, 3, 4] 2.unshift方法 unshift() 方法可向数组的…

oracle安装,导出、导入domp文件、解开oracle行级锁

下载地址&#xff1a; https://www.oracle.com/database/technologies/oracle19c-windows-downloads.html 然后解压&#xff0c;请记住你的解压地址&#xff0c;也就是软件安装地址&#xff0c; 后面还会有一个数据库存储位置&#xff0c;导出的domp文件就是在这里。 然后按照…

PyQt5和Eric7的安装使用 —— Python篇

需要安装Python的朋友请看另一篇文章&#xff1a; windows系统安装Python -----并安装使用Pycharm编辑器 一、安装PyQt5&#xff1a; 1、方法一&#xff1a;使用pip命令在线安装。 输入以下命令可以直接安装&#xff1a; pip install PyQt5 由于安装默认使用国外的镜像&a…

豆浆机水位传感器工作原理

豆浆机水位传感器的工作原理基于光电效应&#xff0c;利用近红外发光二极管和光敏接收器的组合实现液位的精确检测与控制。在豆浆机内部&#xff0c;传感器安装在水箱底部或需要检测液位的位置&#xff0c;起到监测和控制豆浆机水位的重要作用。 传感器包括一个近红外发光二极…

李良济联合盒马杭州店,带你沉浸式体验中医药文化,玩转夏季养生~

6月15-16日&#xff0c;李良济携手盒马联合打造的老字号养生路演活动&#xff0c;在新开业的杭州城西银泰城盒马店强势开启&#xff01; 现场&#xff0c;既有李良济特色清凉养生茶饮&#xff0c;还有中医药文化体验活动&#xff0c;惊喜不断&#xff0c;养生不停~这个夏天在盒…

编写乘法器求解算法表达式

描述 编写一个4bit乘法器模块&#xff0c;并例化该乘法器求解c12*a5*b&#xff0c;其中输入信号a,b为4bit无符号数&#xff0c;c为输出。注意请不要直接使用*符号实现乘法功能。 模块的信号接口图如下&#xff1a; 要求使用Verilog HDL语言实现以上功能&#xff0c;并编写tes…