如何查看python库函数的代码

如何查看python库函数的代码,第1张

python 所有版本的源代码可以在这里下载到:

>

python没有像matlab那样的函数可以直接查看某个函数的源代码,只有去下载整个源代码查看了,不过找起来应该也不难,另外你也可以写一个小程序来查看对应函数的源代码。

Python的函数调用方式是通过import来调用的对应的py文件。

库函数有内建函数build_in(会写python的时候已经可以不用看了,不会写的时候看也看不懂),和通过pip直接下载或者github上下载再安装的函数。本质上都是py文件。后者有时候由于环境的不同需要自行修改(这种情况较少),一般在安装路径下"\Lib\site-packages"文件夹中存在。

学习库函数最好的方法是看网上官方的帮助文档,此外还可以通过python自带的dir()方法查看所有的属性和方法,或者用help()方法查看帮助文档(部分别人造的轮子不一定有)。

另外推荐使用ipython,Python创始人之一的成员编写的交互式系统。

用正则匹配

import re

html = '''<h3>contact us</h3>

<p>contact: manager wang</p>

<p>telephone:12345666</p>

<div id="nav">

<ul>

<li><a class="nav-first" href="/">homepage</a></li>

<li><a href="/listaphp">111</a></li> 

<li><a href="/listaphp">222</a></li>

<li><a href="/order/setorderphp">333</a></li>

<li><a href="/what/cool/istaphp">444</a></li>

</ul>

</div>'''

urls = refindall('href=>', html)  # 正则出a链接 href

urlList = []  # 定义urlList

for url in urls:

    url = urlreplace("href=\"", '')  # 替换href="

    urlListappend(url[:-2])  # 获取的0到-2长度的字符串

print(urlList)

输出:

['/', '/listaphp', '/listaphp', '/order/setorderphp', '/what/cool/istaphp']

01 Re概览

Re模块是python的内置模块,提供了正则表达式在python中的所有用法,默认安装位置在python根目录下的Lib文件夹(如 \Python\Python37\Lib)。主要提供了3大类字符串 *** 作方法:

字符查找/匹配

字符替换

字符分割

由于是面向字符串类型的模块,就不得不提到字符串编码类型。re模块中,模式串和搜索串既可以是 Unicode 字符串 (常用str类型) ,也可以是8位字节串 (bytes,2位16进制数字,例如\xe5) , 但要求二者必须是同类型字符串。

02 字符串查找/匹配

预编译:compile

在介绍查找和匹配函数前,首先需要知道re的compile函数,该函数可以将一个模式串编译成正则表达式类型,以便后续快速匹配和复用

import re pattern = recompile(r'[a-z]{2,5}') type(pattern) #rePattern

此例创建了一个正则表达式式对象 (repattern) ,命名为pattern,用于匹配2-5位小写字母的模式串。后续在使用其他正则表达式函数时,即可使用pattern进行方法调用。

匹配:match

match函数用于从文本串的起始位置开始匹配,若匹配成功,则返回相应的匹配对象,此时可调用group()方法返回匹配结果,也可用span()方法返回匹配起止下标区间;否则返回None

import re pattern = recompile(r'[a-z]{2,5}') text1 = 'this is a re test' res = patternmatch(text1) print(res) # if res:  print(resgroup()) #this  print(resspan()) #(0, 4) text2 = '是的, this is a re test' print(patternmatch(text2))#None

match函数还有一个变形函数fullmatch,当且仅当模式串与文本串刚好全部匹配时,返回一个匹配对象,否则返回None

搜索:search

match只提供了从文本串起始位置匹配的结果,如果想从任意位置匹配,则可调用search方法,与match方法类似,当任意位置匹配成功,则立即返回一个匹配对象,也可调用span()方法获取起止区间、调用group方法获得匹配文本串

import re pattern = recompile(r'\s[a-z]{2}') text1 = 'this is a re test' res = patternsearch(text1) print(res) # if res:  print(resgroup()) #is  print(resspan()) #(4, 7) pattern2 = recompile(r'\s[a-z]{5}') text2 = '是的,this is a re test' print(pattern2search(text2))#None

match和search均用于匹配单个结果,唯一区别在于前者是从起始位置开始匹配,而后者从任意位置匹配,匹配成功则返回一个match对象。

全搜索:findall/finditer

几乎是最常用的正则表达式函数,用于寻找所有匹配的结果,例如在爬虫信息提取中,可非常方便地提取所有匹配字段

import re pattern = recompile(r'\s[a-z]{2,5}') text1 = 'this is a re test' res = patternfindall(text1) print(res) #[' is', ' re', ' test']

findall返回的是一个列表对象类型,当无匹配对象时,返回一个空列表。为了避免因同时返回大量匹配结果占用过多内存,可以调用finditer函数返回一个迭代器类型,其中每个迭代元素是一个match对象,可继续调用group和span方法获取相应结果

import re pattern = recompile(r'\s[a-z]{2,5}') text1 = 'this is a re test' res = patternfinditer(text1) for r in res:  print(rgroup()) """  is  re  test """

当匹配模式串较为简单或者仅需单词调用时,上述所有方法也可直接调用re类函数,而无需事先编译。此时各方法的第一个参数为模式串。

import re pattern = recompile(r'\d{2,5}') text = 'this is re test' refindall('[a-z]+', text) #['this', 'is', 're', 'test'] 03 字符串替换/分割

替换:sub/subn

当需要对文本串进行条件替换时,可调用resub实现 (当然也可先编译后再用调用实例方法) ,相应参数分别为模式串、替换格式、文本串,还可以通过增加缺省参数限定替换次数和匹配模式。通过在模式串进行分组,可实现字符串的格式化替换(类似字符串的format方法),以实现特定任务。

import re text = 'today is 2020-03-05' print(resub('-', '', text)) #'today is 20200305' print(resub('-', '', text, 1)) #'today is 202003-05' print(resub('(\d{4})-(\d{2})-(\d{2})', r'\2/\3/\1', text)) #'today is 03/05/2020'

resub的一个变形方法是resubn,区别是返回一个2元素的元组,其中第一个元素为替换结果,第二个为替换次数

import re text = 'today is 2020-03-05' print(resubn('-', '', text)) #('today is 20200305', 2)

分割:split

还可以调用正则表达式实现字符串的特定分割,相当于split()方法的一个加强版,实现特定模式的分割,返回一个切割后的结果列表

import re text = 'today is a re test, what do you mind' print(resplit(',', text)) #['today is a re test', ' what do you mind'] 04 总结

python中的re模块提供了正则表达式的常用方法,每种方法都包括类方法调用(如rematch)或模式串的实例调用(patternmatch)2种形式

常用的匹配函数:match/fullmatch

常用的搜索函数:search/findall/finditer

常用的替换函数:sub/subn

常用的切割函数:split

还有其他很多方法,但不是很常用,具体可参考官方文档

另外,python还有第三方正则表达式库regex可供选择

到此这篇关于一文秒懂python正则表达式常用函数的文章就介绍到这了,希望大家以后多多支持!

用python的inspect模块,inspectgetmembers得到所有的方法(注意第二个参数过滤函数)然后使用inspectgetargspec()得到函数的参数列表,参数类型,python是动态类型语言,这个重要吗

适用场景:深度学习的训练集、测试集一般放在不同的文件夹中,因此需要获取 所有文件 的地址!此时globglob()函数就可以非常方便的一次性获取 一个文件夹内所有文件的地址 !并把地址转为 字符串 形式。—— 文件全提,用 表示,最好用 / 间隔。

函数使用:

补充:

说明:tensorflow官方喜欢用 pathlib 这个包进行文件的读取,但是我觉得用glob更加方便!

以上就是关于如何查看python库函数的代码全部的内容,包括:如何查看python库函数的代码、python 用自定义函数获取所有超链接、一文秒懂python正则表达式常用函数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/10174984.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存