Python实战:分享4个提升Python编程技能的库

从入门到进阶:掌握Python编程核心技能全解析 Python编程之路充满挑战与机遇。通过本文的介绍,相信读者已对Python编程有了全面的认识。从基础语法到高级特性,再到实战项目,每一步都需不断实践与探索。未来,随着AI、大数据等技术的发展,Python的应用领域将更加广泛,持续学习是保持竞争力的关键。 阅读详情

一、介绍

Python在数据科学和人工智能领域应该算是公认最常用的编程语言之一,同时也为程序员、数据科学家和数据分析师提供了非常丰富的库。就算我们使用Python已经有多年的经验,相信仍然会有很多隐藏的工具,会让你感到惊喜。

本文我们将分享四个比较实用的Python库,它们将助于提高你的技能水平。

二、自动提取日期和时间

当我们在处理非结构化文本数据时,希望能提取文本中的日期和时间,按常规的做法精确提取可能有一定的复杂度。然而如果使用 datefinder 库来实现将变得非常容易。顾名思义, datefinder 可用于从文本信息中查找并提取以不同格式编写的时间和日期。 要安装该库,请运行以下命令:

$ pip install datefinder

示例任务:

from datefinder import find_dates

text_data = """
I will meet the business team on August 1st, 2023 at 07 AM. The goal is 
to discuss the budget planning for September, 20th 2023 at 10 AM
"""

all_dates = find_dates(text_data)

for match in all_dates:
    print(f"Date and time: {match}")
    print(f"Only Time: {match.strftime('%H:%M:%S')}")
    print(f"Only Day: {match.strftime('%d')}")
    print(f"Only Month: {match.strftime('%m')}")
    print("--"*5)

以上代码中,find_dates 函数按以下格式返回所有日期和时间的列表: YYYY-MM-DD HH:MM:SS 其中:

  • YYYY 是年份

  • MM 是月份

  • DD 是日期

  • HH 是小时

  • MM 代表分钟

  • SS 对应两位数秒 以下是上述示例的输出:

三、让你的正则表达式具有人类可读性

人们可以轻松记住正则表达式(regex)中的元字符。然而,最困难的部分仍然是构建与给定文本中的复杂模式匹配的表达式。

如果我们能找到一种方法来构建更多人类可读的内容怎么办?

这就是 PRegEx 库派上用场的地方!

它的安装如下:

$ pip install pregex

示例任务: 让我们考虑以下文本数据,我们要在其中提取日期和 URL 信息。

text_data = """
I will meet the business team on the 01-08-2023 at 07 AM. 
The meeting will be live on the company website at https://company.info.com/business/live
"""

这可以使用 PRegEx 解决,如下所示: 首先,我们导入相关模块,如下所述:

  • AnyButWhitespace 匹配任何字符,但不匹配空格。

  • AnyDigit 匹配 0 到 9 之间的任何数字。

  • OneOrMore 至少匹配一个字符一次。

  • Either 匹配给定模式之一。

  • Exactly 匹配重复 n 次的字符的确切数量。

在 URL 模式中,特意添加了 .net 、 .fr 和 .org 等附加信息,以使模式更加通用。

from pregex.core.classes import AnyButWhitespace, AnyDigit
from pregex.core.quantifiers import OneOrMore, Exactly
from pregex.core.operators import Either 

two_digits = Exactly(AnyDigit(), 2) 
four_digits = Exactly(AnyDigit(), 4)

date_patter = (
    two_digits +
    "-" +
    two_digits +
    "-" +
    four_digits
)

url_pattern = (
          "https://"
          + OneOrMore(AnyButWhitespace())
          + Either(".com", ".fr", ".net", ".org")
          + OneOrMore(AnyButWhitespace())
)

dates_match = date_patter.get_matches(text_data)
url_match = url_pattern.get_matches(text_data)


print(f"All Dates: {dates_match}")
print(f"URL: {url_match}")

输出:

如果您必须使用 re 包,则整体模式将如下所示:

dates_pattern = r'\b\d{2}-\d{2}-\d{4}\b'

# Regular expression pattern for URL
url_pattern = r'http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\\(\\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+'

我让你自己判断 PRegEx 和 re 之间的易用性!

正如您所看到的,使用 re 模块对于初学者来说根本不友好!

四、使用 IceCream 轻松进行代码调试

如果您使用 print or log 语句来调试 Python 代码,请举手 ✋🏽。 当然可以,但是这并没有什么问题,这里有一个例子。

print(f"x: {x}")
print(f"y: {x}")
print(f"z: {x}")

输出:

这是一个非常好的输出,对吧? 使用 print 或 log 的缺点是,在处理较大的程序时可能会很耗时,特别是当您需要添加文本以获得更好的可读性时。

如果我告诉你有更好的选择怎么办? → 使用 IceCream 🍦代替。它是一个 Python 库,使调试过程更容易、更具可读性。 要安装 IceCream 库,请运行以下命令:

$ pip install icecream

让我们尝试一下显示 x、y 和 z 的值。

from icecream import ic

x = 10
y = 20 
z = 30 

ic(x)
ic(x)
ic(x)

输出:

使用最少的代码,我们设法获得更具可读性的输出。

这是使用计算矩形面积的函数的另一个示例。

def compute_rectangle_area(length, width):

    ic(length, width)
    area = length * width
    return area

ic(compute_rectangle_area(5, 6))

输出:

IceCream 通过提供函数名称、参数以及结果等详细信息,提供了更具可读性的结果!这不是很棒吗?

五、重新加载正在运行的代码而不丢失当前状态

想象一下,您已经运行了一个任务,并且忘记了打印或记录一些重要的变量。 在这种情况下,最终的解决方案是停止执行,更新代码,然后重新运行。 这有时可能会令人沮丧,尤其是在训练机器学习模型时,您意识到在上一个时期并未记录所有指标🤯。 别再担心了, reloading 随时为您提供帮助! 顾名思义, reloading 是一个 Python 实用程序,可用于重新加载已经运行的代码而不中断其执行。这绝对会改变游戏规则!

通过运行以下命令完成安装:

$ pip install reloading

想象一下,您执行了以下 for ,其中您想要打印 i 的值及其平方根。 您可以简单地添加缺少的代码,而不是停止程序,如下面的动画所示: 在这种情况下,唯一需要的就是将迭代器包裹在 reloading 函数中。 进行更改后,从第 6 次迭代开始自动添加平方根的值。然后,在恢复初始状态后,打印语句也从第 16 次迭代开始进行了调整。

使用简单的 for 循环重新加载的插图(作者动画) 通过将函数与 @reloading 装饰器一起使用,可以将相同的逻辑应用于函数。 现在,让我们考虑以下 compute_square_root 函数,它实现了上述 for 循环的逻辑。 该函数首先打印 n 的平方根。运行代码后,将添加信息 for n: {n} 以打印 n 的值。

六、总结

你已经熟悉了一些最不为人知的 Python 库,用于日期和时间提取、模式匹配、代码调试以及在不丢失状态的情况下重新加载代码。

《Python 练习一百题:提升编程技能的宝藏》 Python 练习一百题的资源来源十分广泛。在 优快云 博客上,众多博主分享了不同版本的 Python 一百题,涵盖了从基础语法到高级算法的各个方面。例如,有的博主将题目分为不同难度等级,方便学习者逐步提升;还有的博主详细分析了每道题目的解题思路和代码实现,为学习者提供了很好的参考。51CTO 博客也提供了丰富的 Python 一百题资源,不仅有题目和答案,还对一些关键知识点进行了深入讲解。此外,像哔哩哔哩、腾讯云等平台也有关于 Python 一百题的分享,包括部分题目的截图和解题思路介绍。 阅读详情

相关推荐

Python技能树丨Python简介_python 技能树

计算机的世界是二进制的,它只能读懂 0 和 1,人类要学习计算机的语言几乎是不可能的。反过来,让计算机理解人类的语言也太困难。自然语言太过随性,一个意思有多种表达,还有很多语气和双关语(比如女朋友:我没生气)。如何跨过这样的鸿沟呢,可行的方法是设计一套「高级语言」,让人类和计算机都能看懂。简单,人类学习一段时间就能使用。精准,可以自动编译成机器语言来执行。2.1 火爆Python 是当今非常热门的语言之一,根据 TIOBE - 2021 年 1 月编程语言排行,

m0_60707708的博客 895

探索DateFinder:一个智能日期提取神器

探索DateFinder:一个智能日期提取神器 去发现同类优质开源项目:https://gitcode.com/ 在数据处理和文本挖掘领域,高效地提取日期信息是一项基础但至关重要的任务。今天,我们要向大家推荐一款名为DateFinder的开源工具,它能够自动识别并提取文本中的日期信息。由开发者Akoumjian创建,旨在简化这一过程,无论你是数据科学家、程序员还是仅仅需要处理大量包含日期的数据的用...

gitblog_00072的博客 601

618精选编程书单:提升你的代码力

在这个快速发展的技术时代,不断学习和提升自己的编程技能是每位程序员的必修课。今天,我为大家精心挑选了一系列编程技术书籍,它们将是你技术成长道路上的宝贵财富。这些书籍不仅能够丰富你的知识库,更能够提升你的编程思维和实践能力。无论你是编程新手还是资深开发者,都能在这些书籍中找到适合自己的学习资源。👀 想要进一步提升自己的技术实力吗?那就从这些书籍开始吧!

私聊前往站内信:https://i.youkuaiyun.com/#/msg/chat/weixin_44976692 2万+

Python3中对时间的处理(持续更新ing...)

本文介绍Python3中对时间对象的处理

诸神缄默不语的博客 1326

datefinder:使用Python在文本内查找日期并获取datetime对象

datefinder:使用Python在文本内查找日期并获取datetime对象

DateFinder:DateFinder是一个GAS库,用于从电子表格中工作表的单元格范围中搜索日期对象,并使用Google Apps脚本(GAS)将搜索到的范围作为RangeList对象进行检索

日期查找器 概述 DateFinder是一个GAS库,用于从电子表格中工作表上的单元格范围中搜索日期对象,并使用Google Apps脚本(GAS)将搜索到的范围作为RangeList对象进行检索。 描述 有用于使用Google Apps脚本从电子表格的单元格中搜索文本。 但是在这种情况下,单元格中的日期对象将用作字符串。 即,用于搜索的值与通过检索的值相同。 因此,例如,当单元格中具有不同格式的日期对象时,Class TextFinder不能搜索日期。 所以我创建了这个库。 使用此库时,可以通过日期对象和/或两个日期之间的范围来检索单元格中的日期对象。 图书馆的项目钥匙 17ghJiHk43mDeFqYYQRc7YMfTRv9hMNk0dkJ2rudZmJUMaopR0gvS9B01 方法 方法 描述 搜索日期对象并返回RangeList对象。 用法: 1.安装库 为了使用此库,请按以

datefinder:快速提取文本中的日期信息

datefinder:快速提取文本中的日期信息 项目介绍 在处理大量文本数据时,我们常常需要提取其中的日期信息,以便进行事件追踪、数据分析等任务。datefinder 是一个强大的 Python 模块,它专注于从文本中定位并提取日期字符串,将这些字符串转换为 Python 的 datetime 对象,从而简化了日期提取的过程。 项目技术分析 datefinder 的核心是基于正则表达式来匹配文本中...

gitblog_00471的博客 889

python自动提取文本中的时间(包含中文日期)

有时在处理不规则数据时需要提取文本包含的时间日期。 dateutil.parser模块可以统一日期字符串格式。 datefinder模块可以在字符串中提取日期。 datefinder模块实现也是用正则,功能很全 但是对中文不友好。 但是这两个模块都不能支持中文及一些特殊的情况;所以我用正则写了段代码可进行中文日期及一些特殊的时间识别 例如: ‘2012年12月12日’,’3小时前’,’在2012/12/13哈哈’,’时间2012-12-11 12:22:30′,’日期2012-13-11′,’测试2013.12.24′,’今天12:13′ import re import cha

编程技能提升宝典:《数据科学编程技能》练习题库

编程技能提升宝典:《数据科学编程技能》练习题库 项目介绍 《数据科学编程技能》(Programming Skills for Data Science)是一本专为数据科学爱好者和从业者设计的编程技能提升书籍。本书通过一系列精心设计的编程练习,帮助读者掌握数据科学领域所需的核心编程技能。为了方便读者学习和实践,本书的作者团队特别创建了这个开源项目——Book exercises。 这个项目包含了书中...

gitblog_00483的博客 876

工业级RFID读写器|识读器CK-LR08-E00通过以太网TCPIP自由协议与汇川PLC控制器联机与通讯实例方案

本文以工业级RFID读写器CK-LR08-E00和汇川PLC控制器H5U是实例介绍工业级RFID读写器CK-LR08-E00通过以太网TCPIP自由协议与汇川PLC控制器联机与通讯方案。

华翔天诚科技 4371

在overleaf中使用bibtex引用参考文献

最近在挑选写tex的平台,挑来挑去,个人感觉overleaf给我带来的体验感是最舒适的。不过由于对内部的文件组织和make进行了一层封装,所以与一般的本地平台编译tex会有一点不同。此处写一下在overleaf中使用bibtex的方法。 在tex中使用bibtex引用文献是一件很舒适的事,毕竟这是tex的优点之一(要是tex比word难用,我干什么不去用word,hhh) 第一步,我们创建一个.bib文件,名字随便起,我这边起为reference.bib。 然后打开谷歌学术,搜索你想要引用的文章,并找到

锦恢的博客 4万+

15 分钟无硬件跑通 Zephyr RTOS:用最小内核示例完成首次实战

这是一篇 Zephyr RTOS 入门实战指南,核心路线是"零硬件依赖":用 QEMU 虚拟板 `qemu_x86_64` 把仓库里现成的最小内核示例([samples/basic/minimal/](https://link.gitcode.com/i/ce8e950be65691cb9730b81c9550778b))编译、度量 ROM 体积、跑起来,最后再切到你手里的真实开发板。全文命令均以

gitblog_00062的博客 1056

AUTOSAR RTE配置实战:从ECU分区到Task映射的完整指南

本文提供了一份AUTOSAR RTE配置的完整实战指南。从创建ECU分区、定义OS任务,到实现Runnable Entity与Task的精确映射,详细解析了每一步的操作要点与常见陷阱。文章结合配置工具界面,旨在帮助开发者高效完成RTE配置,确保系统实时性与数据一致性,是掌握AUTOSAR核心开发流程的实用参考。

weixin_29228203的博客 484

Python练习题资源库:提升编程技能的宝藏库

Python练习题资源库:提升编程技能的宝藏库 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在编程学习之路上,实践是最好的老师。Python练习题资源库正是这样一个宝藏库,它汇集了从基础到进阶的Python练习题,帮助您深入理解和掌握Python编程语言。该资源库覆盖了1到11单元,涉及元组、列表、字典、类等核心编程概念,让学习者在实践中提升编程技能。 项目技术分析...

gitblog_06759的博客 425

代谢组数据分析(二十二):代谢组原始数据Zscore标准化和主成分分析(PCA)及热图

本教程介绍了使用Z-score标准化和主成分分析(PCA)进行代谢组学数据预处理和分析的方法。代谢物原始数据具有高噪声、高维小样本、高变异性和复杂相互作用关系等特点,因此在数据分析时需注意数据质量控制、参数选择、批次效应、假阳性控制等问题。Z-score标准化通过将数据转换为均值为0、标准差为1的标准正态分布,提高了数据的可比性,减少了系统误差,并适应了统计分析方法的需求。PCA则通过降维、去相关和特征提取,帮助理解数据的结构和模式。教程还详细介绍了数据预处理步骤,包括填补缺失值、设置名称和顺序等,并提供了

专注生信领域 2858

Redhawk:toggle rate从哪来?

redhwak中toggle rate的相关设置

m0_61544122的博客 8119

【好书分享第十三期】618精选编程书单:提升你的代码力

●《深入理解Java虚拟机》(第3版):周志明老师编著,深入剖析Java虚拟机的工作原理,让你对Java性能优化有更深的理解。●《Java核心技术 卷I:开发基础》(原书第12版):深入浅出地介绍了Java编程的基础知识,适合初学者和有经验的开发者。●《Java核心技术 卷II:高级特性》(原书第12版):深入探讨Java的高级特性,让你的Java技能更上一层楼。●《Java并发编程的艺术》第2版:深入探讨Java并发编程的复杂性,帮助你掌握多线程编程的精髓。618大促来袭,是时候为你的书架添置新成员了!

屿小夏.的知识博客 3万+

UG NX二次开发(C#)-建模-获取圆柱面信息(轴向、半径、深度)

获取圆柱面的信息前言一、在UG NX中面的类型有哪些?二、获取圆柱面信息的函数1.获取半径和轴向2、计算圆柱面的深度值3、测试用例总结 文章目录前言一、在UG NX中面的类型有哪些?二、获取圆柱面信息的函数1.获取半径和轴向2、计算圆柱面的深度值3、测试用例总结 前言 在一个项目中,需要遍历曲面,获得所有的圆柱面和圆柱面的信息,包括轴向、半径和圆柱面的深度。经过研究,采用uFModl.AskFaceData(face.Tag, out faceTypeInt, point, dir, box, out

GimiGimmy 4145

Python技能树丨Python简介

计算机的世界是二进制的,它只能读懂 0 和 1,人类要学习计算机的语言几乎是不可能的。 反过来,让计算机理解人类的语言也太困难。自然语言太过随性,一个意思有多种表达,还有很多语气和双关语(比如女朋友:我没生气)。 如何跨过这样的鸿沟呢,可行的方法是设计一套「高级语言」,让人类和计算机都能看懂。 我们现在学习的编程语言,就是这样的高级语言,它有两个特点: 简单,人类学习一段时间就能使用。 精准,可以自动编译成机器语言来执行。

独木不成林,单弦不成音。 1万+

ESP32设备驱动-TB6612FNG直流电机驱动

TB6612FNG 是一款出色的双电机驱动器,非常适合将两个小型直流电机(例如微型金属齿轮电机)连接到微控制器,它还可以用于控制单个双极步进电机。 基于 MOSFET 的 H 桥比 L298N 和 Sanyo 的 LB1836M 等旧式驱动器中使用的基于 BJT 的 H 桥效率高得多,后者允许将更多电流输送到电机,而从逻辑电源汲取的电流更少 (对于真正低电压的应用,LB1836 仍然具有 TB6612 的优势)。

视觉与物联智能 3403

22、预条件技术:矩阵分解与多项式预条件器

本文系统介绍了预条件技术中的不完全分裂法、多项式预条件器和近似逆预条件器。内容涵盖矩阵分解的基本原理、不完全LU和Cholesky分解的实现方法、基于填充水平和阈值策略的改进技术,以及多项式和近似逆预条件器的数学基础与应用。通过算法流程图和表格对比,展示了各类预条件器的适用场景与优缺点,同时探讨了其在迭代求解中的关键作用和未来发展方向。

theta的博客 95

Python 实战开发俄罗斯方块游戏

“人生苦短,我用 Python”,这是网络上的一句戏言,却真实反映了 Python 语言的江湖地位。2017年 IEEE Spectrum 杂志发布的编程语言排行榜中,Python 排行榜首。Python 也被视为 AI 时代的头牌语言,是数据科学和机器学习领域使用最多的语言。Python 语言学习曲线平滑,上手容易。然而,新手必须通过项目实战才能显著提高 Python 开发能力。本达人课意在...

GitChat 3万+

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

探索JPMorgan Chase的Python培训资源:提升你的编程技能

探索JPMorgan Chase的Python培训资源:提升你的编程技能 【免费下载链接】python-training Python training for business analysts and traders 项目地址: https://gitcode...

gitblog_00024的博客 547

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Python工程化实战:从开源技能库到自动化数据管道构建

在Python开发中,模块化编程和代码复用是提升工程效率的核心思想。其原理在于将通用功能封装为独立、可配置的模块,通过清晰的接口降低系统耦合度。这种做法的技术价值在于能显著提升代码的健壮性、可维护性和团队协作效率。在实际应用场景中,无论是处理文件与数据、进行HTTP网络交互,还是实现并发编程,遵循模块化与生产就绪原则都至关重要。本文以开源项目open-python-skills为例,深入解析了如何将散落的代码片段系统化为高质量技能模块,并最终指导读者构建一个健壮的自动化数据抓取与处理管道,涵盖了从配置管理、

weixin_30263073的博客 619

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Codebattle:如何通过编程对战游戏化提升你的编程技能?

你是否厌倦了枯燥的算法练习?是否觉得传统的编程学习方式缺乏动力和趣味性?Codebattle 是一个开源的实时编程对战平台,将编程学习游戏化,让你在与其他程序员的实时对决中提升算法能力和编码速度。 ## 🎯 从枯燥到有趣:编程学习的全新体验 传统的编程学习往往让人感到单调乏味,特别是算法练习,常常让人望而却步。Codebattle 通过游戏化的方式解决了这一痛点,将编程挑战转化为刺激的对决体

gitblog_00373的博客 687

Python十大常用库:让你的Python编程更上一层楼

Python是一种功能强大的编程语言,拥有众多的第三方库和框架,使得开发者可以更加高效、便捷地进行编程工作。本文将介绍Python中最常用的十大库,这些库在数据科学、机器学习、Web开发等领域有着广泛的应用,可以帮助你更好地提升Python编程能力。

dsuiofh的博客 1968
上一篇: 微调 Code Llama 完整指南
下一篇: 未来展望:大型语言模型与 SQL 数据库集成的前景与挑战
技术狂潮AI
博客等级 码龄3年 1282粉丝 137原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技术狂潮AI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值