Python中常用模块json,datetime,random使用

在 Python 开发中,数据处理、时间操作和随机数生成是非常常见的需求。今天就来介绍 json(数据格式处理)、datetime(日期时间操作)和random随机数生成)三个模块

一、json 模块:

json是一种基于文本的轻量级数据交换格式,结构与 Python 字典类似(支持键值对、列表等结构),广泛用于接口数据传输、配置文件存储等场景。

核心操作:序列化与反序列化

  • 序列化:将 Python 数据类型(字典、列表等)转换为 JSON 格式字符串
  • 反序列化:将 JSON 格式字符串转换为 Python 数据类型
1. 序列化方法

json.dumps(obj):将 Python 对象转换为 JSON 字符串

json.dump(obj, file):将 Python 对象直接写入文件(自动转换为 JSON 格式)

import json

# 定义一个Python字典
data = {
    "name": "张三",
    "age": 25,
    "hobbies": ["篮球", "编程"],
    "is_student": False
}

# 转换为JSON字符串(dumps)
json_str = json.dumps(data, ensure_ascii=False, indent=2)  # ensure_ascii=False保留中文,indent=2格式化输出
print(json_str)

# 写入文件(dump)
with open("data.json", "w", encoding="utf-8") as f:
    json.dump(data, f, ensure_ascii=False, indent=2)
2. 反序列化方法

json.loads(json_str):将 JSON 字符串转换为 Python 对象
json.load(file):从文件中读取 JSON 内容并转换为 Python 对象

import json

# 从JSON字符串转换(loads)
json_str = '{"name": "张三", "age": 25, "hobbies": ["篮球", "编程"]}'
data = json.loads(json_str)
print(data["name"])  # 输出:张三

# 从文件读取(load)
with open("data.json", "r", encoding="utf-8") as f:
    data = json.load(f)
print(data["hobbies"])  # 输出:['篮球', '编程']

二、datetime 模块:日期时间的全方位处理

datetime模块提供了对日期、时间的精细化操作,支持日期构造、属性获取、格式转换等功能,包含三个核心类:date(日期)、time(时间)、datetime(日期 + 时间)。

1. date 类:处理日期(年、月、日)

构造日期

date.today():获取当前日期
date(year, month, day):自定义日期(注意月份和天数需合法,例如月份不能超过 12)
获取属性
year:年份
month:月份
day:日
weekday():星期(0 = 周一,6 = 周日)

from datetime import date

# 获取今天的日期
today = date.today()
print(today)  # 输出:2025-07-14(当前日期)

# 自定义日期
birthday = date(2000, 5, 20)
print(birthday.year)  # 输出:2000
print(birthday.weekday())  # 输出该日期是周几(0-6)

日期格式化(strftime)

通过strftime(format)将日期转换为指定格式的字符串,常用格式符:

%Y:四位数年份(如 2025)
%y:两位数年份(如 25)
%m:月份(01-12)
%d:日(01-31)

today = date.today()
print(today.strftime("%Y年%m月%d日"))  # 输出:2025年07月14日
print(today.strftime("%y-%m-%d"))  # 输出:25-07-14

2. time 类:处理时间(时、分、秒)

构造时间
time(hour, minute, second):自定义时间(时、分、秒需在合法范围,例如小时 0-23)
获取属性
hour:小时
minute:分钟
second:秒
时间格式化(strftime)
常用格式符:

%H:24 小时制小时(00-23)
%M:分钟(00-59)
%S:秒(00-59)

from datetime import time

# 自定义时间
t = time(16, 56, 30)  # 16时56分30秒
print(t.hour)  # 输出:16

# 时间格式化
print(t.strftime("%H:%M:%S"))  # 输出:16:56:30

3. datetime 类:日期 + 时间的综合处理

datetime类是date和time的结合,同时包含日期和时间信息,功能更全面。

构造方法

datetime.now():获取当前日期 + 时间
datetime(year, month, day, hour, minute, second):自定义日期时间

关键功能

属性获取:同时支持year/month/day(日期)和hour/minute/second(时间)
字符串转 datetime:datetime.strptime(str, format)(通过指定格式解析字符串)
格式化输出:支持strftime(与 date、time 用法一致)

from datetime import datetime

# 获取当前时间
now = datetime.now()
print(now)  # 输出:2025-07-14 10:30:00(当前具体时间)

# 自定义日期时间
dt = datetime(2025, 10, 1, 8, 0, 0)  # 2025年10月1日8点0分0秒
print(dt.month)  # 输出:10
print(dt.hour)  # 输出:8

# 字符串转datetime(strptime)
time_str = "2025-12-25 18:30:00"
dt = datetime.strptime(time_str, "%Y-%m-%d %H:%M:%S")
print(dt.weekday())  # 输出该日期是周几

# 格式化输出
print(dt.strftime("%Y年%m月%d日 %H时%M分"))  # 输出:2025年12月25日 18时30分

三、random 模块:随机数与随机选择

random模块用于生成随机数、随机选择元素等,在抽奖、模拟数据、随机排序等场景中非常实用。

核心方法

random()    生成 [0, 1) 之间的随机浮点数
randint(a, b)    生成 [a, b] 之间的随机整数(包含 a 和 b)
choice(seq)    从序列(列表、元组等)中随机选择 1 个元素
choices(seq, k=n)    从序列中随机选择 n 个元素(允许重复,即有放回抽样)
sample(seq, k=n)    从序列中随机选择 n 个元素(不允许重复,n≤序列长度,即无放回抽样)
randrange(start, stop, step)    从指定范围(start 到 stop,步长 step)中随机选择一个整数

import random

# 1. 生成随机浮点数
print(random.random())  # 输出:0.783(示例,每次运行结果不同)

# 2. 生成随机整数
print(random.randint(1, 10))  # 输出1-10之间的随机整数

# 3. 随机选择1个元素
fruits = ["苹果", "香蕉", "橙子"]
print(random.choice(fruits))  # 随机输出一个水果

# 4. 随机选择n个元素(可重复)
print(random.choices(fruits, k=2))  # 可能输出:['苹果', '苹果']

# 5. 随机选择n个元素(不重复)
print(random.sample(fruits, k=2))  # 可能输出:['香蕉', '橙子'](无重复)

# 6. 从指定范围选择整数
print(random.randrange(0, 10, 2))  # 从0,2,4,6,8中随机选一个


总结

json:处理跨平台数据交换(如接口 JSON 数据、配置文件)
datetime:处理所有与日期时间相关的操作(如日志时间、倒计时、日程计算)
random:生成随机数据(如随机抽样、验证码、模拟测试数据)

掌握这些模块的核心用法,能极大提升数据处理效率。建议结合实际场景多练习,比如用json读写配置文件、用datetime计算两个日期的差值、用random实现一个简单的抽奖程序,加深理解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值