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

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JAVA语言开发的一套(智慧工地监管系统源码)让工地变得更加“聪明”

JAVA语言开发的一套&#xff08;智慧工地监管系统源码&#xff09;让工地变得更加“聪明” 数字智慧工地是指利用物联网、大数据、云计算、人工智能等先进技术&#xff0c;对工地进行全面数字化改造和智能化升级&#xff0c;实现工地管理的精细化、高效化和智能化。它通过实时…

ETO MARKETS:美债高额利息——美国财政的不可承受之重

摘要 2024年&#xff0c;美国联邦政府债务的利息支出预计将达到8920亿美元&#xff0c;这一数字比国防开支还要多&#xff0c;凸显了政府债务和利率上升的双重压力。国会预算办公室&#xff08;CBO&#xff09;预测&#xff0c;利息支出占GDP的比例将继续上升&#xff0c;这意…

Apple Phone Memory

Apple Phone Memory 苹果手机内存查询&#xff0c;哪些应用程序&#xff08;app&#xff09;占用内存&#xff1a; 设置 通用 iPhone储存空间 清理下QQ音乐&#xff1a;

远程桌面无法连接,远程桌面连接登录没有成功

在信息技术领域&#xff0c;远程桌面连接作为一种便捷的管理和操作工具&#xff0c;对于企业和个人用户而言都具有极其重要的价值。然而&#xff0c;在实际使用过程中&#xff0c;远程桌面无法连接的问题时常出现&#xff0c;这不仅影响了工作效率&#xff0c;还可能对数据安全…

Matlab数学建模实战应用:案例2 - 传染病传播

目录 前言 一、问题分析 二、模型建立 三、Matlab代码实现 四、模型验证 灵敏度分析 五、模型应用 实例总结 总结 前言 传染病传播模型是公共卫生和流行病学的重要研究内容&#xff0c;通过数学建模可以帮助我们理解传染病的传播规律和趋势&#xff0c;以便制定有效的…

多组学双疾病串扰怎么做?PAN-AD九个机器学习+MR+单细胞,工作量不少

说在前面 “串扰”这个名词听起来高级了一个level&#xff0c;其实就是MR-通路的双疾病联合分析。虽然是筛选标志物的思路&#xff0c;但是工作量不小&#xff0c;作者还收集了13个不同AD自身免疫疾病数据集用于验证自己的机器学习模型&#xff0c;分析就是一些常规的WGCNA、P…

VMware虚拟机三种网络模式设置 - NAT(网络地址转换模式)

一、前言 在前一篇《Bridged&#xff08;桥接模式&#xff09;》中&#xff0c;我详细介绍了虚拟机网络模式设置中的桥接模式。今天详细讲解一下NAT&#xff08;网络地址转换模式&#xff09;。 在虚拟机&#xff08;VM&#xff09;中&#xff0c;NAT&#xff08;Network Addre…

CSS--解决图片变形的方法

原文网址&#xff1a;CSS--解决图片变形的方法_IT利刃出鞘的博客-CSDN博客 简介 本文介绍html文件中图片变形的解决方法。 问题描述 我们经常需要指定所有图片的大小&#xff0c;让它们排列起来时看起来更整齐。但是&#xff0c;如果我们指定了width和height&#xff0c;那…

使用Harbor搭建局域网私有docker镜像库

说明&#xff1a;本文只介绍使用http的方式访问Harbor镜像库&#xff0c;https访问的方式请自行查询。 一、安装harbo 前提条件&#xff1a;已安装好docker。 1.1、安装docker-compose sudo apt install docker-compose1.2、下载Harbor 从Harbor的官方github&#xff0c;下载…

聊聊探索性测试

探索性测试定义及来源&#xff1a;​ 特意度娘了一下&#xff0c;探索性测试的定义&#xff1a; 探索性测试可以说是一种测试思维技术。它没有很多实际的测试方法、技术和工具&#xff0c;但是却是所有测试人员都应该掌握的一种测试思维方式。探索性强调测试人员的主观能动性…

使用opencv合并两个图像

本节的目的 linear blending&#xff08;线性混合&#xff09;使用**addWeighted()**来添加两个图像 原理 (其实我也没太懂&#xff0c;留个坑&#xff0c;感觉本科的时候线代没学好。不对&#xff0c;我本科就没学线代。) 源码分析 源码链接 #include "opencv2/imgc…

Python-gui开发之Pycharm+pyside6/Pyqt6环境搭建

Python-gui开发之Pycharm+pyside6/Pyqt6环境搭建 软件版本一、软件安装1、Python安装2、Pycharm安装3、pyside6或pyqt6安装①安装pyside6②安装PyQt6和pyqt6-tools二、Pycharm项目配置1、插件安装2、新建项目以及环境配置3、包管理安装三、在Pycharm中配置PySide61、pyside6 Qt…

MySQL功能测试-之应用工程

MySQL功能测试-之应用工程 前言pom.xmlapplication.yml 文件common.vo 包ResultVO config 包properties 包DruidConfigPropertyDruidMonitorProperty AutoFillMetaObjectHandlerDruidConfigFluxConfigurationMyBatisPlusConfig controller 包ClientControllerDruidControllerWe…

人工智能产品经理,行业巨头争夺的稀缺人才

前言 在当今这个由数据驱动的时代&#xff0c;人工智能&#xff08;AI&#xff09;正迅速成为推动各行各业创新的核心力量。随着行业巨头纷纷布局人工智能领域&#xff0c;对于专业人才的需求也日益增长。特别是人工智能产品经理这一岗位&#xff0c;缺口高达6.8万&#xff0c…

[机器学习算法] Q学习

Q学习&#xff08;Q-Learning&#xff09;是一种基于值的强化学习算法&#xff0c;用于在给定状态下选择动作&#xff0c;以最大化累积奖励。它通过不断更新一个称为Q表&#xff08;Q-table&#xff09;的表来学习动作的价值。 一、理解基本概念 状态 (State, S) 这是环境的…

戏剧之家杂志戏剧之家杂志社戏剧之家编辑部2024年第14期目录

文艺评论 南戏瓯剧跨文化传播研究 陈晓东;高阳;许赛梦; 3-7 论互联网时代的戏剧传播与批评——以西法大剧社和南山剧社为例 邬慧敏; 8-10 “左手荒诞&#xff0c;右手温情”——《西西弗神话》在戏剧《第七天》中的接受探究 赵稳稳; 11-13 戏剧研讨《戏剧之家》投稿…

计算机毕业设计师hadoop+spark+hive知识图谱医生推荐系统 医生数据分析可视化大屏 医生爬虫 医疗可视化 医生大数据 机器学习 大数据毕业设计

流程&#xff1a; 1.Python爬虫采集中华健康网约10万医生数据&#xff0c;最终存入mysql数据库&#xff1b; 2.使用pandasnumpy/hadoopmapreduce对mysql中的医生数据进行数据分析&#xff0c;使用高德地图解析地理位置&#xff0c;并将结果转入.csv文件同时上传到hdfs文件系统&…

Github生成Personal access tokens及在git中使用

目录 生成Token 使用Token-手工修改 使用Token-自动 生成Token 登录GitHub&#xff0c;在GitHub右上角点击个人资料头像&#xff0c;点击Settings → Developer Settings → Personal access tokens (classic)。 在界面上选择点击【Generate new token】&#xff0c;填写如…

西米支付:【风控升级】同一商户集中交易,将会限制正常用卡

支付公司风控策略再升级&#xff01;近日&#xff0c;有某支付公司代理透漏&#xff0c;客户反馈机器突然不能刷卡了&#xff0c;换卡也无法交易&#xff0c;交易均提示06-超出商户限额&#xff0c;然而该款机器刷卡限额为单日30万&#xff0c;单月300万&#xff0c;客户并未触…

ctr/cvr预估之FM模型

ctr/cvr预估之FM模型 在数字化时代&#xff0c;广告和推荐系统的质量直接影响着企业的营销成效和用户体验。点击率&#xff08;CTR&#xff09;和转化率&#xff08;CVR&#xff09;预估作为这些系统的核心组件&#xff0c;其准确性至关重要。传统的机器学习方法&#xff0c;如…