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…

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语言…

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…

修改以太网卡mac地址

原生以太网卡与PCIe以太网卡 以Intel 原生以太网卡与PCIe以太网卡为例&#xff1a; Intel原生以太网卡和PCIe以太网卡在系统中实现网络连接时&#xff0c;涉及到与系统总线&#xff08;如PCIe总线&#xff09;的连接方式和性能差异。 Intel 原生以太网卡 定义&#xff1a;所…

cloud_enum:一款针对不同平台云环境安全的OSINT工具

关于cloud_enum cloud_enum是一款功能强大的云环境安全OSINT工具&#xff0c;该工具支持AWS、Azure和Google Cloud三种不同的云环境&#xff0c;旨在帮助广大研究人员枚举目标云环境中的公共资源&#xff0c;并尝试寻找其中潜在的安全威胁。 功能介绍 当前版本的cloud_enum支…

第04章:IDEA的安装与使用

第04章&#xff1a;随堂复习与企业真题&#xff08;IDEA安装与使用&#xff09; 一、随堂复习 1. IDEA的认识 IDEA(集成功能强大、符合人体工程学&#xff08;设置人性化&#xff09;)Eclipse 2. IDEA的下载、安装、卸载 卸载&#xff1a;使用控制面板进行卸载&#xff0c;…