热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

pythoning——11、正则匹配

一简介:就其本质而言,正则表达式(或RE)是一种小型的、高度专业化的编程语言,(在Python中

一简介:
就其本质而言,正则表达式(或 RE)是一种小型的、高度专业化的编程语言,
(在Python中)它内嵌在Python中,并通过 re 模块实现。正则表达式模式被
编译成一系列的字节码,然后由用 C 编写的匹配引擎执行。


字符匹配(普通字符,元字符):
普通字符:大多数字符和字母都会和自身匹配
>>> re.findall('alex','yuanaleSxalexwupeiqi')
['alex']

2元字符:. ^ $ * + ? { } [ ] | ( ) \

 

我们首先考察的元字符是"[" 和 "]"。它们常用来指定一个字符类别,所谓字符类
别就是你想匹配的一个字符集。字符可以单个列出,也可以用“-”号分隔的两个给定
字符来表示一个字符区间。例如,[abc] 将匹配"a", "b", 或 "c"中的任意一个字
符;也可以用区间[a-c]来表示同一字符集,和前者效果一致。如果你只想匹配小写
字母,那么 RE 应写成 [a-z].
元字符在类别里并不起作用。例如,[akm$]将匹配字符"a", "k", "m", 或 "$" 中
的任意一个;"$"通常用作元字符,但在字符类别里,其特性被除去,恢复成普通字
符。

 

():
#!python
>>> p = re.compile('(a(b)c)d')
>>> m = p.match('abcd')
>>> m.group(0)
'abcd'
>>> m.group(1)
'abc'
>>> m.group(2)
'b'

[]:元字符[]表示字符类,在一个字符类中,只有字符^、-、]和\有特殊含义。
字符\仍然表示转义,字符-可以定义字符范围,字符^放在前面,表示非.

+ 匹配+号前内容1次至无限次
? 匹配?号前内容0次到1次
{m} 匹配前面的内容m次
{m,n} 匹配前面的内容m到n次
*?,+?,??,{m,n}? 前面的*,+,?等都是贪婪匹配,也就是尽可能匹配,后面加?号使其变成惰性匹配


从前面的描述可以看到'*','+'和'*'都是贪婪的,但这也许并不是我们说要的,
所以,可以在后面加个问号,将策略改为非贪婪,只匹配尽量少的RE。示例,
体会两者的区别:
>>> re.findall(r"a(\d+?)","a23b") # 非贪婪模式
['2']
>>> re.findall(r"a(\d+)","a23b")
['23']


>>> re.search(&#39;<(.*)>&#39;, &#39;

title

&#39;).group()
&#39;

title

&#39;
re.search(&#39;<(.*?)>&#39;, &#39;

title

&#39;).group()
&#39;

&#39;

 

注意比较这种情况&#xff1a;
>>> re.findall(r"a(\d&#43;)b","a23b")
[&#39;23&#39;]
>>> re.findall(r"a(\d&#43;?)b","a23b") #如果前后均有限定条件&#xff0c;则非匹配模式失效
[&#39;23&#39;]


\:
反斜杠后边跟元字符去除特殊功能&#xff0c;
反斜杠后边跟普通字符实现特殊功能。
引用序号对应的字组所匹配的字符串
re.search(r"(alex)(eric)com\2","alexericcomeric")

\d 匹配任何十进制数&#xff1b;它相当于类 [0-9]。
\D 匹配任何非数字字符&#xff1b;它相当于类 [^0-9]。
\s 匹配任何空白字符&#xff1b;它相当于类 [ \t\n\r\f\v]。
\S 匹配任何非空白字符&#xff1b;它相当于类 [^ \t\n\r\f\v]。
\w 匹配任何字母数字字符&#xff1b;它相当于类 [a-zA-Z0-9_]。
\W 匹配任何非字母数字字符&#xff1b;它相当于类 [^a-zA-Z0-9_]
\b: 匹配一个单词边界&#xff0c;也就是指单词和空格间的位置。
匹配单词边界&#xff08;包括开始和结束&#xff09;&#xff0c;这里的“单词”&#xff0c;是指连续的字母、数字和
下划线组成的字符串。注意&#xff0c;\b的定义是\w和\W的交界&#xff0c;
这是个零宽界定符&#xff08;zero-width assertions&#xff09;只用以匹配单词的词首和词尾。
单词被定义为一个字母数字序列&#xff0c;因此词尾就是用空白符或非字母数字符来标
示的。
>>> re.findall(r"abc\b","dzx &abc sdsadasabcasdsadasdabcasdsa")
[&#39;abc&#39;]
>>> re.findall(r"\babc\b","dzx &abc sdsadasabcasdsadasdabcasdsa")
[&#39;abc&#39;]
>>> re.findall(r"\babc\b","dzx sabc sdsadasabcasdsadasdabcasdsa")
[]

例如&#xff0c; &#39;er/b&#39; 可以匹配"never" 中的 &#39;er&#39;&#xff0c;但不能匹配 "verb" 中的 &#39;er&#39;。
\b只是匹配字符串开头结尾及空格回车等的位置, 不会匹配空格符本身
例如"abc sdsadasabcasdsadasdabcasdsa",
\sabc\s不能匹配,\babc\b可以匹配到"abc"
>>> re.findall("\babc\b","abc sdsadasabcasdsadasdabcasdsa")
[]
>>> re.findall(r"\babc\b","abc sdsadasabcasdsadasdabcasdsa")
[&#39;abc&#39;]
\b 就是用在你匹配整个单词的时候。 如果不是整个单词就不匹配。 你想匹
配 I 的话&#xff0c;你知道&#xff0c;很多单词里都有I的&#xff0c;但我只想匹配I&#xff0c;就是“我”&#xff0c;这个时
候用 \bI\b
************************************************
函数&#xff1a;

1
match&#xff1a;re.match(pattern, string, flags&#61;0)
flags 编译标志位&#xff0c;用于修改正则表达式的匹配方式&#xff0c;如&#xff1a;是否区分大小写&#xff0c;
多行匹配等等。
re.match(&#39;com&#39;, &#39;comwww.runcomoob&#39;).group()

re.match(&#39;com&#39;, &#39;Comwww.runComoob&#39;,re.I).group()


2
search&#xff1a;re.search(pattern, string, flags&#61;0)
re.search(&#39;\dcom&#39;, &#39;www.4comrunoob.5com&#39;).group()


注意&#xff1a;
re.match(&#39;com&#39;, &#39;comwww.runcomoob&#39;)
re.search(&#39;\dcom&#39;, &#39;www.4comrunoob.5com&#39;)
一旦匹配成功&#xff0c;就是一个match object 对象&#xff0c;而match object 对象拥有以下方法&#xff1a;
group() 返回被 RE 匹配的字符串
start() 返回匹配开始的位置
end() 返回匹配结束的位置
span() 返回一个元组包含匹配 (开始,结束) 的位置
group() 返回re整体匹配的字符串&#xff0c;可以一次输入多个组号&#xff0c;对应组号匹配的字符串。
1. group&#xff08;&#xff09;返回re整体匹配的字符串&#xff0c;
2. group (n,m) 返回组号为n&#xff0c;m所匹配的字符串&#xff0c;如果组号不存在&#xff0c;则返回indexError异常
3.groups&#xff08;&#xff09;groups() 方法返回一个包含正则表达式中所有小组字符串的元组&#xff0c;从 1 到
所含的小组号&#xff0c;通常groups&#xff08;&#xff09;不需要参数&#xff0c;返回一个元组&#xff0c;元组中的元就是正则
表达式中定义的组。
import re
a &#61; "123abc456"
re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(0) #123abc456,返回整体
re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(1) #123
re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(2) #abc
re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(3) #456

group(1) 列出第一个括号匹配部分&#xff0c;group(2) 列出第二个括号匹配部分&#xff0c;group(3)
列出第三个括号匹配部分。

-----------------------------------------------
3
findall&#xff1a;
re.findall 以列表形式返回所有匹配的字符串
  re.findall可以获取字符串中所有匹配的字符串。如&#xff1a;

p &#61; re.compile(r&#39;\d&#43;&#39;)
print p.findall(&#39;one1two2three3four4&#39;)


re.findall(r&#39;\w*oo\w*&#39;, text)&#xff1b;获取字符串中&#xff0c;包含&#39;oo&#39;的所有单词。

import re
text &#61; "JGood is a handsome boy,he is handsome and cool,clever,and so on ...."
print re.findall(r&#39;\w*oo\w*&#39;,text) #结果&#xff1a;[&#39;JGood&#39;, &#39;cool&#39;]
#print re.findall(r&#39;(\w)*oo(\w)*&#39;,text) # ()表示子表达式 结果&#xff1a;[(&#39;G&#39;, &#39;d&#39;), (&#39;c&#39;, &#39;l&#39;)]

finditer():

>>> p &#61; re.compile(r&#39;\d&#43;&#39;)
>>> iterator &#61; p.finditer(&#39;12 drumm44ers drumming, 11 ... 10 ...&#39;)
>>> for match in iterator:
match.group() , match.span()

4
sub subn&#xff1a;

re.sub(pattern, repl, string, max&#61;0)
re.sub("g.t","have",&#39;I get A, I got B ,I gut C&#39;)


5
split&#xff1a;
p &#61; re.compile(r&#39;\d&#43;&#39;)
p.split(&#39;one1two2three3four4&#39;)

re.split(&#39;\d&#43;&#39;,&#39;one1two2three3four4&#39;)

6
re.compile(strPattern[, flag]):
这个方法是Pattern类的工厂方法&#xff0c;用于将字符串形式的正则表达式编译为
Pattern对象。 第二个参数flag是匹配模式&#xff0c;取值可以使用按位或运算符&#39;|&#39;
表示同时生效&#xff0c;比如re.I | re.M
  可以把正则表达式编译成一个正则表达式对象。可以把那些经常使用的正则
表达式编译成正则表达式对象&#xff0c;这样可以提高一定的效率。下面是一个正则表达式
对象的一个例子&#xff1a;

import re
text &#61; "JGood is a handsome boy, he is cool, clever, and so on..."
regex &#61; re.compile(r&#39;\w*oo\w*&#39;)
print regex.findall(text) #查找所有包含&#39;oo&#39;的单词


question&#xff1a;


1 findall能不能返回全组匹配的列表&#xff0c;而不是优先捕获组的列表&#xff1a;yes,
import re

a &#61; &#39;abc123abv23456&#39;
b &#61; re.findall(r&#39;23(a)?&#39;,a)
print b
b &#61; re.findall(r&#39;23(?:a)?&#39;,a)
print b

>>> re.findall("www.(baidu|xinlang)\.com","www.baidu.com")
[&#39;baidu&#39;]
>>> re.findall("www.(?:baidu|xinlang)\.com","www.baidu.com")
[&#39;www.baidu.com&#39;]
>>> re.findall("www.(?:baidu|xinlang)\.com","www.xinlang.com")
[&#39;www.xinlang.com&#39;]


findall如果使用了分组&#xff0c;则输出的内容将是分组中的内容而非find到的结果&#xff0c;
为了得到find到的结果&#xff0c;要加上问号来启用“不捕捉模式”&#xff0c;就可以了。


2 re.findall(&#39;\d*&#39;, &#39;www33333&#39;)

3 re.split("[bc]","abcde")


4 source &#61; "1 - 2 * ( (60-30 &#43;(-9-2-5-2*3-5/3-40*4/2-3/5&#43;6*3) * (-9-2-5-2*5/3 &#43; 7 /3*99/4*2998 &#43;10 * 568/14 )) - (-4*3)/ (16-3*2) )"


re.search(&#39;\([^()]*\)&#39;, source).group()regular&#61;&#39;\d&#43;\.?\d*([*/]|\*\*)[\-]?\d&#43;\.?\d*&#39;
re.search(&#39;\d&#43;\.?\d*([*/]|\*\*)[\-]?\d&#43;\.?\d*&#39;, string).group()


add_regular&#61;&#39;[\-]?\d&#43;\.?\d*\&#43;[\-]?\d&#43;\.?\d*&#39;
sub_regular&#61;&#39;[\-]?\d&#43;\.?\d*\-[\-]?\d&#43;\.?\d*&#39;
re.findall(sub_regular, "(3&#43;4-5&#43;7&#43;9)")


4 检测一个IP地址&#xff1a;
re.search(r"(([01]?\d?\d|2[0-4]\d|25[0-5])\.){3}([01]?\d?\d|2[0-4]\d|25[0-5]\.)","192.168.1.1")

 

 

-----------------------------------------------------------

re.I 使匹配对大小写不敏感
re.L 做本地化识别&#xff08;locale-aware&#xff09;匹配
re.M 多行匹配&#xff0c;影响 ^ 和 $
re.S 使 . 匹配包括换行在内的所有字符
>>> re.findall(".","abc\nde")
>>> re.findall(".","abc\nde",re.S)
re.U 根据Unicode字符集解析字符。这个标志影响 \w, \W, \b, \B.
re.X 该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解。

re.S&#xff1a;.将会匹配换行符&#xff0c;默认.逗号不会匹配换行符
>>> re.findall(r"a(\d&#43;)b.&#43;a(\d&#43;)b","a23b\na34b")
[]
>>> re.findall(r"a(\d&#43;)b.&#43;a(\d&#43;)b","a23b\na34b",re.S)
[(&#39;23&#39;,&#39;34&#39;)]
>>>
re.M&#xff1a;^$标志将会匹配每一行&#xff0c;默认^只会匹配符合正则的第一行&#xff1b;默认$只会匹配符合正则的末行
>>> re.findall(r"^a(\d&#43;)b","a23b\na34b")
[&#39;23&#39;]
>>> re.findall(r"^a(\d&#43;)b","a23b\na34b",re.M)
[&#39;23&#39;,&#39;34&#39;]
但是&#xff0c;如果没有^标志&#xff0c;
>>> re.findall(r"a(\d&#43;)b","a23b\na34b")
[&#39;23&#39;,&#39;43&#39;]
可见&#xff0c;是无需re.M

import re

n&#61;&#39;&#39;&#39;12 drummers drumming,
11 pipers piping, 10 lords a-leaping&#39;&#39;&#39;

p&#61;re.compile(&#39;^\d&#43;&#39;)
p_multi&#61;re.compile(&#39;^\d&#43;&#39;,re.MULTILINE) #设置 MULTILINE 标志
print re.findall(p,n) #[&#39;12&#39;]
print re.findall(p_multi,n) # [&#39;12&#39;, &#39;11&#39;]
&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;
import re
a &#61; &#39;a23b&#39;
print re.findall(&#39;a(\d&#43;?)&#39;,a) #[&#39;2&#39;]
print re.findall(&#39;a(\d&#43;)&#39;,a) #[&#39;23&#39;]
print re.findall(r&#39;a(\d&#43;)b&#39;,a) #[&#39;23&#39;]
print re.findall(r&#39;a(\d&#43;?)b&#39;,a) # [&#39;23&#39;]
&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;
b&#61;&#39;a23b\na34b&#39;
&#39;&#39;&#39; . 匹配非换行符的任意一个字符&#39;&#39;&#39;

re.findall(r&#39;a(\d&#43;)b.&#43;a(\d&#43;)b&#39;,b) #[]

re.findall(r&#39;a(\d&#43;)b&#39;,b,re.M) # [&#39;23&#39;, &#39;34&#39;]

re.findall(r&#39;^a(\d&#43;)b&#39;,b,re.M) # [&#39;23&#39;, &#39;34&#39;]

re.findall(r&#39;a(\d&#43;)b&#39;,b) #[&#39;23&#39;,&#39;34&#39;] 可以匹配多行

re.findall(r&#39;^a(\d&#43;)b&#39;,b) # [&#39;23&#39;] 默认^只会匹配符合正则的第一行

re.findall(r&#39;a(\d&#43;)b$&#39;,b) # [&#39;34&#39;] 默认$只会匹配符合正则的末行

re.findall(r&#39;a(\d&#43;)b&#39;,b,re.M) #[&#39;23&#39;, &#39;34&#39;]

re.findall(r&#39;a(\d&#43;)b.?&#39;,b,re.M) # [&#39;23&#39;, &#39;34&#39;]

re.findall(r"a(\d&#43;)b", "a23b\na34b") # [&#39;23&#39;, &#39;34&#39;]
---------------------------------------------------------------


推荐&#xff1a;http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html

 


*****关于rawstring以及\:

\n是换行&#xff0c;ASCLL码是10
\r是回车&#xff0c;ASCLL码是13

re.findall("\","abc\de")

f&#61;open("C:\abc.txt")
\a是 转义字符 007&#xff0c;响铃符 BEL。
f&#61;open(r"D:\abc.txt")
>>>>>>python自己也需要转义&#xff0c;也是通过\转义

>>> re.findall(r"\d","ww2ee")
[&#39;2&#39;]
>>> re.findall("\d","ww2ee")
[&#39;2&#39;]

>>强烈建议用raw字符串来表述正则

 

你可能已经看到前面关于原始字符串用法的一些例子了。原始字符串的产生正是由于有正则表
达式的存在。原因是ASCII 字符和正则表达式特殊字符间所产生的冲突。比如&#xff0c;特殊符号“\b”在
ASCII 字符中代表退格键&#xff0c;但同时“\b”也是一个正则表达式的特殊符号&#xff0c;代表“匹配一个单词边界”。
为了让RE 编译器把两个字符“\b”当成你想要表达的字符串&#xff0c;而不是一个退格键&#xff0c;你需要用另一个
反斜线对它进行转义&#xff0c;即可以这样写&#xff1a;“\\b”。
但这样做会把问题复杂化&#xff0c;特别是当你的正则表达式字符串里有很多特殊字符时&#xff0c;就更容
易令人困惑了。原始字符串就是被用于简化正则表达式的复杂程度。
事实上&#xff0c;很多Python 程序员在定义正则表达式时都只使用原始字符串。
下面的例子用来说明退格键“\b” 和正则表达式“\b”(包含或不包含原始字符串)之间的区别&#xff1a;
>>> m &#61; re.search(&#39;\bblow&#39;, &#39;blow&#39;) # backspace, no match #退格键,没有匹配

>>> re.search(&#39;\\bblow&#39;, &#39;I blow&#39;).group() # escaped \, now it works #用\转义后&#xff0c;现在匹
配了

>>> re.search(r&#39;\bblow&#39;, &#39;I blow&#39;).group() # use raw string instead #改用原始字符串

你可能注意到我们在正则表达式里使用“\d”&#xff0c;没用原始字符串&#xff0c;也没出现什么问题。那是因为
ASCII 里没有对应的特殊字符&#xff0c;所以正则表达式编译器能够知道你指的是一个十进制数字


转载于:https://www.cnblogs.com/fukuda/p/5573014.html


推荐阅读
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • 本文介绍了Python对Excel文件的读取方法,包括模块的安装和使用。通过安装xlrd、xlwt、xlutils、pyExcelerator等模块,可以实现对Excel文件的读取和处理。具体的读取方法包括打开excel文件、抓取所有sheet的名称、定位到指定的表单等。本文提供了两种定位表单的方式,并给出了相应的代码示例。 ... [详细]
  • Python实现变声器功能(萝莉音御姐音)的方法及步骤
    本文介绍了使用Python实现变声器功能(萝莉音御姐音)的方法及步骤。首先登录百度AL开发平台,选择语音合成,创建应用并填写应用信息,获取Appid、API Key和Secret Key。然后安装pythonsdk,可以通过pip install baidu-aip或python setup.py install进行安装。最后,书写代码实现变声器功能,使用AipSpeech库进行语音合成,可以设置音量等参数。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 本文详细介绍了Spring的JdbcTemplate的使用方法,包括执行存储过程、存储函数的call()方法,执行任何SQL语句的execute()方法,单个更新和批量更新的update()和batchUpdate()方法,以及单查和列表查询的query()和queryForXXX()方法。提供了经过测试的API供使用。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • python中安装并使用redis相关的知识
    本文介绍了在python中安装并使用redis的相关知识,包括redis的数据缓存系统和支持的数据类型,以及在pycharm中安装redis模块和常用的字符串操作。 ... [详细]
  • Python已成为全球最受欢迎的编程语言之一,然而Python程序的安全运行存在一定的风险。本文介绍了Python程序安全运行需要满足的三个条件,即系统路径上的每个条目都处于安全的位置、"主脚本"所在的目录始终位于系统路径中、若python命令使用-c和-m选项,调用程序的目录也必须是安全的。同时,文章还提出了一些预防措施,如避免将下载文件夹作为当前工作目录、使用pip所在路径而不是直接使用python命令等。对于初学Python的读者来说,这些内容将有所帮助。 ... [详细]
  • Python中的PyInputPlus模块原文:https ... [详细]
author-avatar
潙沵悈煙卻悈鋽孒沵
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有