Python re模块 (正则表达式用法剖析详解)

阅读目录

      • 正则表达式
        • 字符组
        • 字符(元字符)
        • 量词(个数)
        • 边界字符(也属于元字符)
        • 分组()与或 |[^]
        • 转义字符
        • 贪婪模式和非贪婪模式
      • re模块下的常用方法
        • re.match()
        • re.search()
        • re.findall()
        • re.split()
        • re.sub()
        • 提取与分组
      • 应用
        • 匹配标签
        • 匹配整数
        • 数字匹配

正则表达式

字符组

字符组 : [字符组]
在同一个位置可能出现的各种字符组成了一个字符组,在正则表达式中用“ [ ] ”表示
字符分为很多类,比如数字、字母、标点等等。
假如要求一个位置"只能出现一个数字",那么这个位置上的字符只能是0、1、2...9这10个数之一

Python re模块 (正则表达式用法剖析详解)_第1张图片


字符(元字符)

Python re模块 (正则表达式用法剖析详解)_第2张图片

\w 包括:字母、数字、下划线;如果验证要求只允许输入:“数字和字母” 不能单独 \w 解决,
还要考虑到下划线,所以只能写成[0-9a-zA-Z] 
import re

strd = input("please:")
if re.search("^[0-9a-zA-Z]+$", strd):

    print("输入正确")
else:
    print("错误")

Python re模块 (正则表达式用法剖析详解)_第3张图片

# [/s/S] 、[/d/D]、[/w/W] 这类的可以匹配任意字符

量词(个数)

Python re模块 (正则表达式用法剖析详解)_第4张图片
Python re模块 (正则表达式用法剖析详解)_第5张图片

边界字符(也属于元字符)

Python re模块 (正则表达式用法剖析详解)_第6张图片

 有一些有特殊意义的元字符进入字符组中会回复它本来的意义如: . | [ ] ( )
^ 匹配字符串的开始 如: ^x ,表示字符串必须以x开头, 注意:[^ ] 意义不同
$ 匹配字符串的结束 如: x$ , 表示字符串必须以x结尾

^,$ : 如果字符有多行, 且在 re.M 模式下, ^,$ 会将每一行当作一个字符串,
	即换行后会重新匹配

\A 匹配字符串的开始,^ 类似,: \Ax ,表示字符串必须以x开头
\Z 匹配字符串的结尾, 与$类似,: x\Z,表示字符串必须以x结尾
# \A ,\Z , 在re.M模式下不会影响多行匹配

\b 用来匹配单词的结尾,: er\b 表示单词是否以 er结束
\B 用来匹配非单词的结尾,: er\B 表示单词中含有er,单独的以er结尾的词不行
# 注意:\b 需要转意 即写成 \\b

import re

res=re.findall("海.","海燕海桥海石")   # ['海燕', '海桥', '海石']
res=re.findall("^海.","海燕海桥海石")  # 海燕
res=re.findall("海.$","海燕海桥海石")  # 海石
res=re.findall("^海.$","海燕海桥海石") # []
res=re.findall("^海.$","海燕") # ['海燕']  这就能明白为什么 . 也属于边界字符了

print(res)

分组()与或 |[^]

身份证号码是一个长度为15或18个字符的字符串,如果是15位则全部由数字组成,首位不能为0;
	如果是18位,则前17位全部是数字,末位可能是数字或x,下面我们尝试用正则来表示:

Python re模块 (正则表达式用法剖析详解)_第7张图片

# 匹配任意一个邮箱 [email protected]
# x|y 表示匹配 x 或者 y
# (xyz) 加上括号表示将 xyz 看成一个整体
mailPattern = "\w+@\w+\.\w+"
# mailPattern = "(\w+@\w+\.((com)|(cn)))" # 在re.match / re.search 下能找出
# 匹配日期 1800-01-01 --- 2020-12-31
# 1899 1999 -- 2020
# 0-[1-9] 1[0-1-2]
# 0-[1-9] 1 2 - 0-9 3 0,1


result=re.search("^((1[89]\d{2})|(20[01]\d)|(2020))-((0[1-9])|(1[012]))-((0[1-9])|([12]\d)|(3[01]))$","2020-12-31")
# 注意括号分组,或 | 的时候,每一种可能给一个括号,
# 判断的每一项(年、月、日)再给一个括号
print(result)


import re

strd = input("请按格式输入出生年月日:")
if re.search("((1[89]\d{2})|(20[01]\d)|(2020))-((0[1-9])|(1[012]))-((0[1-9])|([12]\d)|(3[01]))", strd):
    print("输入正确")
else:
    print("输入格式有误,或者数值有误")

转义字符

Python re模块 (正则表达式用法剖析详解)_第8张图片

贪婪模式和非贪婪模式

贪婪匹配:在满足匹配时,匹配尽可能长的字符串,默认情况下,采用贪婪匹配

import re

res = re.findall("a?", "min is a good man")  # 非贪婪模式
# 结果:['', '', '', '', '', '', '', 'a', '', '', '', '', '', '', '', 'a', '', '']
res = re.findall("a?", "min is a good maan")  # 非贪婪模式
# 结果:['', '', '', '', '', '', '', 'a', '', '', '', '', '', '', '', 'a', 'a', '', '']
res = re.findall("a*", "min is a good maan")  # 贪婪模式
# 结果:['', '', '', '', '', '', '', 'a', '', '', '', '', '', '', '', 'aa', '', '']
res = re.findall("a+", "min is a good maan")  # 贪婪模式
# 结果:['a','aa']
res = re.findall("a{3}", "min is a good maaan")  # 贪婪模式
# 结果:['aaa']
res = re.findall("a{3}", "min is a good maaaan")  # 贪婪模式
# 结果:['aaa']
res = re.findall("a{3,5}", "min is a good maaaaan")  # 贪婪模式
# 结果:['aaaaa'] 包后
res = re.findall("a{3,}", "min is a good maaaaaaan")  # 贪婪模式
# 结果:['aaaaaaa']
res = re.findall("a{,5}", "min is a good maaaaaaan")  # 贪婪模式
# 结果:['', '', '', '', '', '', '', 'a', '', '', '', '', '', '', '', 'aaaaa', 'aa', '', '']
print(res)

单独出现 ? 非贪婪模式
出现 的第二个范围量词是“ ?” 就会变成 非贪婪模式

常用的非贪婪匹配Pattern

*? 重复任意次,但尽可能少重复
+? 重复1次或更多次,但尽可能少重复
?? 重复0次或1次,但尽可能少重复
{n,m}? 重复n到m次,但尽可能少重复
{n,}? 重复n次以上,但尽可能少重复

. * ? 的用法

. 是任意字符
* 是取 0 至 无限长度
? 是非贪婪模式。
合在一起就是:取尽量少的任意字符,一般不会这么单独写,他大多用在:
.*?x

就是取前面任意长度的字符,直到一个 x 出现

re模块下的常用方法

三种模式:
re.match() 是从源字符串的 起始位置开始查找一个匹配项
re.search() 是从源字符串中找到一个匹配项
re.findall() 是从源字符串中找到所有的匹配项

flag:真正的含义
	re.I 	使匹配对大小写不敏感
 	re.M 	多行匹配,是否影响 ^ 和 $  
	re.S 使 . 匹配包含换行符在内的任意字符
# re.M 实例
import re

res = re.findall("^min","min is a good man\nmin is a good man") # ['min']
res = re.findall("^min", "min is a good man\nmin is a good man", re.M)  # ['min', 'min']

# 如果后面,没有加上re.M 表示看做一行字符串(不会进行换行),只能找到前面的一个“min”,加了,加了能找到两个

res = re.findall("\Amin","min is a good man\nmin is a good man")  # ['min']
res = re.findall("\Amin","min is a good man\nmin is a good man",re.M) # ['min', 'min']


# print(res)

re.match()

re.match(pattern,string,flag) # 是从源字符串的 起始位置开始查找一个匹配项

     pattern 要进行匹配的正则表达式
     string 表示的是源字符串
     flag 标记, 可以不写
         re.I 使匹配对大小写不敏感
         re.M 多行匹配,是否影响 ^ 和 $
         re.S 使 . 匹配包含换行符在内的任意字符

# 如果匹配成功会返回一个对象
# 如果匹配失败 会 返回None
# 可以根据 结构是否为 None 来判断是否匹配成功
# 可以通过这个变量的group方法来获取结果;
# 如果没有匹配到,会返回None,此时如果使用group会报错
res = re.match("www","www.baidu.com")
res = re.match("www","aww.baidu.com")
res = re.match("www","awww.baidu.com")
res = re.match("www","wwbaidu.www,com")
res = re.match("www","wwwwbaidu.www,com")
res = re.match("www","WWW.baidu.com")
res = re.match("www","WWW.baidu.com",re.I)
print(res)
print(type(res))


>>> 匹配手机号码
import re
phone_number = input('please input your phone number : ')
if re.match('^(13|14|15|18)[0-9]{9}$',phone_number): # 如果成功则不是None
        print('是合法的手机号码')
else:
        print('不是合法的手机号码')
        

re.search()

re.search(pattern,string,flag) # 是从源字符串中(从左往右)找到第一个匹配项

     pattern 要进行匹配的正则表达式
     string 表示的是源字符串
     flag 标记, 可以不写
         re.I 使匹配对大小写不敏感
         re.M 多行匹配,是否影响 ^ 和 $
         re.S 使 . 匹配包含换行符在内的任意字符
         
     # 多用于表单验证    
res = re.search("www","www.baidu.com")
res = re.search("www","ww.baiduwww.com")
res = re.search("www","www.baiduwww.com")
print(res)

print(res.group)
# 只匹配从左到右的第一个,得到的不是直接的结果,而是一个变量,
# --需要通过这个变量的group方法来获取结果;
# 如果没有匹配到,会返回None,此时如果使用group会报错

re.findall()

re.findall(pattern,string,flag) # 是从源字符串中找到所有的匹配项

     pattern 要进行匹配的正则表达式
     string 表示的是源字符串
     flag 标记, 可以不写
         re.I 使匹配对大小写不敏感
         re.M 多行匹配,是否影响 ^ 和 $
         re.S 使 . 匹配包含换行符在内的任意字符
# findall的结果是列表的形式,会将找到的多个结果放到列表中去
# 注意: 如果找不到,会返回一个空列表
# 注意:不能直接使用 group 方法
res = re.findall("www","www.baidu.com")
res = re.findall("wwwa","www.baiduwww.com") # 结果:[]
print(res)
print(type(res))

findall 的优先级查询:

import re

ret = re.findall('www.(baidu|oldboy).com', 'www.oldboy.com')
print(ret)  # ['oldboy'] 这是因为findall会优先把匹配结果组里内容返回

# 如果想要匹配结果,取消权限即可,格式:在分组内加上 ?:即 (?:正则表达式)

ret = re.findall('www.(?:baidu|oldboy).com', 'www.oldboy.com')
print(ret)  # ['www.oldboy.com']
>>> 三种模式练习
import re

ret = re.findall('a', 'eva egon yuan') # 返回所有满足匹配条件的结果,放在列表里
print(ret) # 结果 : ['a', 'a']

ret = re.search('a', 'eva egon yuan').group()
print(ret) # 结果 : 'a'
# 函数会在字符串内 查找模式匹配,只到找到第一个匹配然后返回一个包含匹配信息的对象,
# 该对象可以通过调用group()方法得到匹配的字符串,如果字符串没有匹配,则返回None。

ret = re.match('a', 'abc').group() # 同search,不过在字符串开始处进行匹配
print(ret)
#结果 : 'a'

re.split()

# re.split()
# 参数:
# pattern,正则表达式, 即以某个正则来拆分
# string, 被拆分的源字符串
# maxsplit=0, 最大拆分次数
# flags=0 标识


# 正则表达式来拆分字符串
strData ="wen1 is2 a3 old4 man5"
lis_re = re.split(" ",strData)
# list_re=re.split("\d",strData)
# list_re=re.split("[0-9]",strData)
# list_re=re.split(" +",strData) #注意,+前面有个空格
# print(listRes) 结果:['wen1', 'is2', 'a3', 'old4', 'man5']
# 结果:['wen', ' is', ' a', ' old', ' man', '']
# 如果想保留用来作切割标准的字符串:只需给它添加分组即可
ret = re.split('\d+','alex83taibai40egon25')
print(ret) # ['alex', 'taibai', 'egon', ''] # 最后一次切割 留下末尾一个空
ret = re.split('(\d+)','alex83taibai40egon25aa')
print(ret) # ['alex', '83', 'taibai', '40', 'egon', '25', 'aa']
# split的优先级查询
ret=re.split("\d+","eva3egon4yuan")
print(ret) #结果 : ['eva', 'egon', 'yuan']

ret=re.split("(\d+)","eva3egon4yuan")
print(ret) # 结果 : ['eva', '3', 'egon', '4', 'yuan']

# 在匹配部分加上()之后所切出的结果是不同的,
# 没有()的没有保留所匹配的项,但是有()的却能够保留了匹配的项,
# 这个在某些需要保留匹配部分的使用过程是非常重要的。

re.sub()

str= "蔡徐篮球 是 xxx\n蔡徐坤歌手 是 yyy\n 肖战 是 帅哥"

# re.sub()
# 参数 
	pattern
	repl, 用来替换的新字符串
	string
	count=0, 替换的次数,默认是全部替换
	flags=0  # 不能修改,默认可以不写
	# 默认是 re.M 模式,会换行匹配所有

res = re.sub("蔡徐.{,2}","肖战",str)
'''
肖战 是 xxx
肖战手 是 yyy
 肖战 是 帅哥
'''

# subn与sub功能一致, 但是 sub是返回替 换后的新字符串,

# subn返回的是元组,元组有2个元素, 元素1代表替换后的新字符串, 元素2代表的替换的次数
res = re.subn("蔡徐.{,2}","肖战",str)
# ('肖战 是 xxx\n肖战手 是 yyy\n 肖战 是 帅哥', 2) 
    
print(res)

提取与分组

正则表达式不仅仅有强大的匹配功能,还有强大提取功能
(xyz) 将xyz看作一个整体
(xyz) 将xyz看成一个小组

re.search() 模式下的分组

import re

s = 'wahaha'  # 标签语言 html 网页
ret = re.search('<(\w+)>(\w+)',s)
print(ret.group(0))  # 所有的结果
print(ret.group(1)) # 数字参数代表的是取对应分组中的内容
print(ret.group(2))
print(ret.group(3))

re.findall() 模式的分组

# 为了findall也可以顺利取到分组中的内容,有一个特殊的语法,就是优先显示分组中的内容
ret = re.findall('(\w+)',s)
print(ret) #['a', 'wahaha', 'a']
ret = re.findall('>(\w+)<',s)
print(ret) #['wahaha']

strData = "010-34545546"
numberPattern = "(\d{3})-(\d{8})" 结果:[('010', '34545546')]
numberPattern = "((\d{3})-(\d{8}))" 结果:[('010-34545546', '010', '34545546')]
# findall会将所有的组作为一个元组的元素,放在列表中,组是靠括号来分的
res = re.findall(numberPattern,strData)
print(res) # print(res[0]) 结果:('010', '34545546')

re.findall模式下,取消分组优先

ret = re.findall('\d+(\.\d+)?','1.234*4.3')
print(ret) # 结果是:['.234', '.3']
# 为什么只显示了 小数位,因为findall优先显示分组中的内容

# 取消分组优先做法:在分组内加上?:(?:正则表达式)
ret = re.findall('\d+(?:\.\d+)?','1.234*4.3')
print(ret)


str_date = "010-34545546"
numberPattern = "\d{3}-\d{8}"
numberPattern = "(\d{3})-(\d{8})"
numberPattern = "((\d{3})-(\d{8}))"
numberPattern = "(?P\d{3})-(?P\d{8})"

res = re.match(numberPattern,str_date)
print(res)

# group可以提取完整匹配的字符
# () 可以将字符串分成多个组, 分组顺序是由外到里, 由前到后
print(res.group()) # 默认是0
print(res.group(1)) # 第一组
print(res.group(2)) # 第二组
#print(res.group(3)) # 第三组

>>>可以给每一个分组取一个别名, 格式:(?P<别名>正则)
# 获取的时候可以直接根据别名来获取
print(res.group("First"))
print(res.group("Last"))

# groups 将() 包裹的内容进行分组提取, 将所有的分组作为元组的元素,并作为结果返回
     # 它只看括号
res=re.match("\d{3}-\d{8}",strDate) # 这里没括号,输出结果为:()空元祖
print(res.groups())

分组命名的用法

s = 'wahaha' # 加入div标签不一致
pattern = '<(\w+)>(\w+)'
ret = re.search(pattern,s)
# print(ret.group(1) == ret.group(3)) False

# 使用前面的分组 要求使用这个名字的分组和前面同名分组中的内容匹配的必须一致
pattern = '<(?P\w+)>(\w+)'
ret = re.search(pattern,s)
print(ret) #False

>>>练习
# 2018-12-06  这种时间格式,中间的分隔符必须一致,所以可以用到命名分组
# 2018.12.6
# 2018 12 06
# 12:30:30

总结

import re

ret = re.findall('a', 'eva egon yuan')  # 返回所有满足匹配条件的结果,放在列表里
print(ret) # 结果 : ['a', 'a']

ret = re.search('a', 'eva egon yuan').group()
print(ret) # 结果 : 'a'
# 函数会在字符串内查找模式匹配,只到找到第一个匹配然后返回一个包含匹配信息的对象,该对象可以
# 通过调用group()方法得到匹配的字符串,如果字符串没有匹配,则返回None。

ret = re.match('a', 'abc').group()  # 同search,不过尽在字符串开始处进行匹配
print(ret)
# 结果 : 'a'

ret = re.split('[ab]', 'abcd')  # 先按'a'分割得到''和'bcd',在对''和'bcd'分别按'b'分割
print(ret)  # ['', '', 'cd']

ret = re.sub('\d', 'H', 'eva3egon4yuan4', 1) # 将数字替换成'H',参数1表示只替换1个
print(ret) # evaHegon4yuan4

ret = re.subn('\d', 'H', 'eva3egon4yuan4') # 将数字替换成'H',返回元组(替换的结果,替换了多少次)
print(ret)

obj = re.compile('\d{3}')  # 将正则表达式编译成为一个 正则表达式对象,规则要匹配的是3个数字
ret = obj.search('abc123eeee') # 正则表达式对象调用search,参数为待匹配的字符串
print(ret.group())  # 结果 : 123

import re
ret = re.finditer('\d', 'ds3sy4784a')   # finditer返回一个存放匹配结果的迭代器
print(ret)  # 
print(next(ret).group())  # 查看第一个结果
print(next(ret).group())  # 查看第二个结果
print([i.group() for i in ret])  # 查看剩余的左右结果

'''
先编译后使用

re模块的进阶 : 时间/空间
compile 节省你使用正则表达式解决问题的时间
编译 正则表达式 编译成 字节码
在多次使用的过程中 不会多次编译
ret = re.compile('\d+')   # 已经完成编译了
print(ret)

res = ret.findall('alex83taibai40egon25')
print(res) # 类型是“list”
res = ret.search('sjkhk172按实际花费928')
print(res.group())



finditer 节省你使用正则表达式解决问题的空间/内存
ret = re.finditer('\d+','alex83taibai40egon25')
#print(ret)这是一个迭代器
for i in ret:
     print(i.group())


findall 返回列表 找所有的匹配项
search  匹配就 返回一个变量,通过group取匹配到的第一个值,不匹配就返回None,group会报错
match   相当于search的正则表达式中加了一个'^'

spilt   返回列表,按照正则规则切割,默认匹配到的内容会被切掉
sub/subn 替换,按照正则规则去寻找要被替换掉的内容,subn返回元组,第二个值是替换的次数

compile  编译一个正则表达式,用这个结果去search match findall finditer 能够节省时间
finditer 返回一个迭代器,所有的结果都在这个迭代器中,需要通过循环+group的形式取值 能够节省内存
'''

应用

匹配标签

import re


ret = re.search("<(?P\w+)>\w+","

hello

"
) # 还可以在分组中利用?的形式给分组起名字 # 获取的匹配结果可以直接用group('名字')拿到对应的值 print(ret.group('tag_name')) # 结果 :h1 print(ret.group()) # 结果 :

hello

ret = re.search(r"<(\w+)>\w+","

hello

"
) # 如果不给组起名字,也可以用\序号来找到对应的组,表示要找的内容和前面的组内容一致 # 获取的匹配结果可以直接用group(序号)拿到对应的值 print(ret.group(1)) print(ret.group()) # 结果 :

hello

# 正则匹配所有所有tag
<[^>]+> # [^>]+ 指除了“>”外,但是至少有一个字符

# 匹配 open tag 
<[^/][^>]*> 
# 匹配 close tag
</[^>]+>

# 匹配 单标签
<[^>]+/>

Python re模块 (正则表达式用法剖析详解)_第9张图片

import re
s=""
ret=re.search("<[^>]+>",s).group()
print(ret) # 
# 匹配 双/单 引号
"[^"]*"  # 双/单 引号 中可以是没有任何内容

在这里插入图片描述

爬虫实例:爬取豆瓣排名前250的电影

import re
from urllib.request import urlopen

def getPage(url): # 获取网页的字符串
     response = urlopen(url)
     return response.read().decode('utf-8')

def parsePage(s):
     ret = com.finditer(s) # 从s这个网页源码中 找到所有符合com正则表达式规则的内容 并且以迭代器的形式返回
     for i in ret:
         yield {
             "id": i.group("id"),
             "title": i.group("title"),
             "rating_num": i.group("rating_num"),
             "comment_num": i.group("comment_num"),
         }

def main(num): # 0 25 50 #这个函数执行10次,每次爬取一页的内容
     url = 'https://movie.douban.com/top250?start=%s&filter=' % num #每次等于多少页
     response_html = getPage(url) # response_html就是这个url对应的html代码 就是 str
     ret = parsePage(response_html) # ret是一个生成器
     #print(ret)
     f = open("move_info7", "a", encoding="utf8")
     for obj in ret:
         print(obj)
         data = str(obj)
         f.write(data + "\n")
     f.close()


com = re.compile(
         '
.*?
.*?(?P\d+).*?(?P.*?)</span>'</span> <span class="token string">'.*?<span class="rating_num" .*?>(?P<rating_num>.*?)</span>.*?<span>(?P<comment_num>.*?)评价</span>'</span><span class="token punctuation">,</span> re<span class="token punctuation">.</span>S<span class="token punctuation">)</span> <span class="token comment">#.*? 的使用,遇到什么停止,加上 re.S模式;把要用的内容分组好</span> count <span class="token operator">=</span> <span class="token number">0</span> <span class="token keyword">for</span> i <span class="token keyword">in</span> <span class="token builtin">range</span><span class="token punctuation">(</span><span class="token number">10</span><span class="token punctuation">)</span><span class="token punctuation">:</span> main<span class="token punctuation">(</span>count<span class="token punctuation">)</span> count <span class="token operator">+=</span> <span class="token number">25</span> </code></pre> <blockquote> <p>对照标签</p> </blockquote> <p><a href="http://img.e-com-net.com/image/info8/95606c4a28f744d7b1b637782e7ca1bf.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/95606c4a28f744d7b1b637782e7ca1bf.jpg" alt="Python re模块 (正则表达式用法剖析详解)_第10张图片" width="650" height="398" style="border:1px solid black;"></a></p> <h4><font color="green">匹配整数</font></h4> <pre><code class="prism language-python"><span class="token keyword">import</span> re ret<span class="token operator">=</span>re<span class="token punctuation">.</span>findall<span class="token punctuation">(</span>r<span class="token string">"\d+"</span><span class="token punctuation">,</span><span class="token string">"1-2*(60+(-40.35/5)-(-4*3))"</span><span class="token punctuation">)</span> <span class="token keyword">print</span><span class="token punctuation">(</span>ret<span class="token punctuation">)</span> <span class="token comment"># ['1', '2', '60', '40', '35', '5', '4', '3']</span> ret<span class="token operator">=</span>re<span class="token punctuation">.</span>findall<span class="token punctuation">(</span>r<span class="token string">"-?\d+\.\d*|(-?\d+)"</span><span class="token punctuation">,</span><span class="token string">"1-2*(60+(-40.35/5)-(-4*3))"</span><span class="token punctuation">)</span> <span class="token keyword">print</span><span class="token punctuation">(</span>ret<span class="token punctuation">)</span> <span class="token comment"># ['1', '-2', '60', '', '5', '-4', '3']</span> ret<span class="token punctuation">.</span>remove<span class="token punctuation">(</span><span class="token string">""</span><span class="token punctuation">)</span> <span class="token keyword">print</span><span class="token punctuation">(</span>ret<span class="token punctuation">)</span> <span class="token comment"># ['1', '-2', '60', '5', '-4', '3']</span> </code></pre> <pre><code class="prism language-python">匹配一个整数:\d<span class="token operator">+</span> 匹配一个小数:\d<span class="token operator">+</span>\<span class="token punctuation">.</span>\d<span class="token operator">+</span> 匹配一个整数或者小数:\d<span class="token operator">+</span>\<span class="token punctuation">.</span>\d<span class="token operator">+</span> <span class="token operator">|</span> \d<span class="token operator">+</span> 或者 \d<span class="token operator">+</span><span class="token punctuation">(</span>\<span class="token punctuation">.</span>\d<span class="token operator">+</span><span class="token punctuation">)</span>? </code></pre> <h4><font color="green">数字匹配</font></h4> <pre><code class="prism language-python"><span class="token operator">>></span><span class="token operator">></span>匹配一段文本中的每行的邮箱 <span class="token comment"># 只允许英文字母、数字、下划线、英文句号、以及中划线组成</span> <span class="token comment"># 例:zhoujielun-001@gmail.com</span> <span class="token operator">^</span><span class="token punctuation">[</span>a<span class="token operator">-</span>zA<span class="token operator">-</span>Z0<span class="token operator">-</span>9_<span class="token operator">-</span><span class="token punctuation">]</span><span class="token operator">+</span>@<span class="token punctuation">[</span>a<span class="token operator">-</span>zA<span class="token operator">-</span>Z0<span class="token operator">-</span>9_<span class="token operator">-</span><span class="token punctuation">]</span><span class="token operator">+</span><span class="token punctuation">(</span>\<span class="token punctuation">.</span><span class="token punctuation">[</span>a<span class="token operator">-</span>zA<span class="token operator">-</span>Z0<span class="token operator">-</span>9_<span class="token operator">-</span><span class="token punctuation">]</span><span class="token operator">+</span><span class="token punctuation">)</span><span class="token operator">+</span>$ <span class="token comment"># 名称允许汉字、字母、数字,域名只允许英文域名</span> <span class="token comment"># 例:周杰伦001Abc@lenovo.com.cn</span> <span class="token operator">^</span><span class="token punctuation">[</span>A<span class="token operator">-</span>Za<span class="token operator">-</span>z0<span class="token operator">-</span><span class="token number">9</span>\u4e00<span class="token operator">-</span>\u9fa5<span class="token punctuation">]</span><span class="token operator">+</span>@<span class="token punctuation">[</span>a<span class="token operator">-</span>zA<span class="token operator">-</span>Z0<span class="token operator">-</span>9_<span class="token operator">-</span><span class="token punctuation">]</span><span class="token operator">+</span><span class="token punctuation">(</span>\<span class="token punctuation">.</span><span class="token punctuation">[</span>a<span class="token operator">-</span>zA<span class="token operator">-</span>Z0<span class="token operator">-</span>9_<span class="token operator">-</span><span class="token punctuation">]</span><span class="token operator">+</span><span class="token punctuation">)</span><span class="token operator">+</span>$ <span class="token comment"># 邮箱规则:</span> <span class="token comment"># @之前必须有内容且只能是字母(大小写)、数字、下划线(_)、减号(-)、点(.)</span> <span class="token comment"># @和最后一个点(.)之间必须有内容且只能是字母(大小写)、数字、点(.)、减号(-),</span> <span class="token comment"># --且两个点不能挨着</span> <span class="token comment"># 最后一个点(.)之后必须有内容且内容只能是字母(大小写)、数字且长度为大于等于2个字</span> <span class="token comment"># --节,小于等于6个字节</span> <span class="token punctuation">[</span><span class="token number">0</span><span class="token operator">-</span><span class="token number">9a</span><span class="token operator">-</span>zA<span class="token operator">-</span>Z<span class="token punctuation">]</span><span class="token punctuation">[</span>\w\<span class="token operator">-</span><span class="token punctuation">.</span><span class="token punctuation">]</span><span class="token operator">+</span>@<span class="token punctuation">[</span>a<span class="token operator">-</span>zA<span class="token operator">-</span>Z0<span class="token operator">-</span><span class="token number">9</span>\<span class="token operator">-</span><span class="token punctuation">]</span><span class="token operator">+</span><span class="token punctuation">(</span>\<span class="token punctuation">.</span><span class="token punctuation">[</span>a<span class="token operator">-</span>zA<span class="token operator">-</span>Z0<span class="token operator">-</span><span class="token number">9</span>\<span class="token operator">-</span><span class="token punctuation">]</span><span class="token operator">+</span><span class="token punctuation">)</span><span class="token operator">*</span>\<span class="token punctuation">.</span><span class="token punctuation">[</span>A<span class="token operator">-</span>Za<span class="token operator">-</span>z0<span class="token operator">-</span><span class="token number">9</span><span class="token punctuation">]</span><span class="token punctuation">{</span><span class="token number">2</span><span class="token punctuation">,</span><span class="token number">6</span><span class="token punctuation">}</span> <span class="token operator">>></span><span class="token operator">></span>匹配一段文本中的每行的时间字符串,比如:‘<span class="token number">1990</span><span class="token operator">-</span><span class="token number">07</span><span class="token operator">-</span><span class="token number">12</span>’; 分别取出<span class="token number">1</span>年的<span class="token number">12</span>个月(<span class="token operator">^</span><span class="token punctuation">(</span><span class="token number">0</span>?<span class="token punctuation">[</span><span class="token number">1</span><span class="token operator">-</span><span class="token number">9</span><span class="token punctuation">]</span><span class="token operator">|</span><span class="token number">1</span><span class="token punctuation">[</span><span class="token number">0</span><span class="token operator">-</span><span class="token number">2</span><span class="token punctuation">]</span><span class="token punctuation">)</span>$)、 一个月的<span class="token number">31</span>天:<span class="token operator">^</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token number">0</span>?<span class="token punctuation">[</span><span class="token number">1</span><span class="token operator">-</span><span class="token number">9</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token operator">|</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token operator">|</span><span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">[</span><span class="token number">0</span><span class="token operator">-</span><span class="token number">9</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token operator">|</span><span class="token number">30</span><span class="token operator">|</span><span class="token number">31</span><span class="token punctuation">)</span>$ <span class="token operator">>></span><span class="token operator">></span>匹配qq号。<span class="token punctuation">(</span>腾讯QQ号从<span class="token number">10000</span>开始<span class="token punctuation">)</span> [<span class="token number">1</span><span class="token punctuation">,</span><span class="token number">9</span>]<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">,</span><span class="token number">9</span><span class="token punctuation">]</span><span class="token punctuation">{</span><span class="token number">4</span><span class="token punctuation">,</span><span class="token punctuation">}</span> <span class="token operator">>></span><span class="token operator">></span>匹配一个浮点数。 <span class="token operator">^</span><span class="token punctuation">(</span><span class="token operator">-</span>?\d<span class="token operator">+</span><span class="token punctuation">)</span><span class="token punctuation">(</span>\<span class="token punctuation">.</span>\d<span class="token operator">+</span><span class="token punctuation">)</span>?$ 或者 <span class="token operator">-</span>?\d<span class="token operator">+</span>\<span class="token punctuation">.</span>?\d<span class="token operator">*</span> <span class="token operator">>></span><span class="token operator">></span>匹配汉字。 <span class="token operator">^</span><span class="token punctuation">[</span>\u4e00<span class="token operator">-</span>\u9fa5<span class="token punctuation">]</span><span class="token punctuation">{</span><span class="token number">0</span><span class="token punctuation">,</span><span class="token punctuation">}</span>$ <span class="token operator">>></span><span class="token operator">></span>匹配出所有整数 <span class="token operator">>></span><span class="token operator">></span> <span class="token number">1</span><span class="token operator">-</span><span class="token number">2</span><span class="token operator">*</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token number">60</span><span class="token operator">-</span><span class="token number">30</span><span class="token operator">+</span><span class="token punctuation">(</span><span class="token operator">-</span><span class="token number">40</span><span class="token operator">/</span><span class="token number">5</span><span class="token punctuation">)</span><span class="token operator">*</span><span class="token punctuation">(</span><span class="token number">9</span><span class="token operator">-</span><span class="token number">2</span><span class="token operator">*</span><span class="token number">5</span><span class="token operator">/</span><span class="token number">3</span><span class="token operator">+</span><span class="token number">7</span><span class="token operator">/</span><span class="token number">3</span><span class="token operator">*</span><span class="token number">99</span><span class="token operator">/</span><span class="token number">4</span><span class="token operator">*</span><span class="token number">2998</span><span class="token operator">+</span><span class="token number">10</span><span class="token operator">*</span><span class="token number">568</span><span class="token operator">/</span><span class="token number">14</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token punctuation">(</span><span class="token operator">-</span><span class="token number">4</span><span class="token operator">*</span><span class="token number">3</span><span class="token punctuation">)</span><span class="token operator">/</span><span class="token punctuation">(</span><span class="token number">16</span><span class="token operator">-</span><span class="token number">3</span><span class="token operator">*</span><span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment"># 从上面算式中匹配出内层没有其他小括号的表达式</span> \<span class="token punctuation">(</span><span class="token punctuation">[</span><span class="token operator">^</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">]</span><span class="token operator">+</span>\<span class="token punctuation">)</span> <span class="token operator">>></span><span class="token operator">></span>从类似<span class="token number">9</span><span class="token operator">-</span><span class="token number">1000</span><span class="token operator">/</span><span class="token number">3</span><span class="token operator">+</span><span class="token number">7</span><span class="token operator">/</span><span class="token number">3</span><span class="token operator">*</span><span class="token number">99</span><span class="token operator">/</span><span class="token number">4</span><span class="token operator">*</span><span class="token number">2998</span><span class="token operator">+</span><span class="token number">10</span><span class="token operator">*</span><span class="token number">568</span><span class="token operator">/</span><span class="token number">14</span>的表达式中匹配出从左到右第一个乘法或除法 \d<span class="token operator">+</span><span class="token punctuation">[</span><span class="token operator">*</span><span class="token operator">/</span><span class="token punctuation">]</span>\d<span class="token operator">+</span> </code></pre> <blockquote> <p>模拟一个计算器功能</p> </blockquote> <pre><code class="prism language-python"><span class="token keyword">import</span> re <span class="token keyword">def</span> <span class="token function">atmo_cal</span><span class="token punctuation">(</span>exp<span class="token punctuation">)</span><span class="token punctuation">:</span> <span class="token comment"># 原子计算器,最小单位不可再拆分了,处理乘除法,如:5*0.6;6/2</span> <span class="token keyword">if</span> <span class="token string">"*"</span> <span class="token keyword">in</span> exp<span class="token punctuation">:</span> a<span class="token punctuation">,</span> b <span class="token operator">=</span> exp<span class="token punctuation">.</span>split<span class="token punctuation">(</span><span class="token string">"*"</span><span class="token punctuation">)</span> <span class="token comment"># 最小了,只有两位</span> <span class="token keyword">return</span> <span class="token builtin">str</span><span class="token punctuation">(</span><span class="token builtin">float</span><span class="token punctuation">(</span>a<span class="token punctuation">)</span> <span class="token operator">*</span> <span class="token builtin">float</span><span class="token punctuation">(</span>b<span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token keyword">elif</span> <span class="token string">"/"</span> <span class="token keyword">in</span> exp<span class="token punctuation">:</span> a<span class="token punctuation">,</span> b <span class="token operator">=</span> exp<span class="token punctuation">.</span>split<span class="token punctuation">(</span><span class="token string">"/"</span><span class="token punctuation">)</span> <span class="token keyword">return</span> <span class="token builtin">str</span><span class="token punctuation">(</span><span class="token builtin">float</span><span class="token punctuation">(</span>a<span class="token punctuation">)</span> <span class="token operator">/</span> <span class="token builtin">float</span><span class="token punctuation">(</span>b<span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token keyword">def</span> <span class="token function">add_sub</span><span class="token punctuation">(</span>exp<span class="token punctuation">)</span><span class="token punctuation">:</span> <span class="token comment"># 计算加减法</span> ret <span class="token operator">=</span> re<span class="token punctuation">.</span>findall<span class="token punctuation">(</span><span class="token string">"[-+]?\d+(?:\.\d+)?"</span><span class="token punctuation">,</span> exp<span class="token punctuation">)</span> <span class="token comment"># 取消分组优先,得到一个列表</span> exp_sum <span class="token operator">=</span> <span class="token number">0</span> <span class="token keyword">for</span> i <span class="token keyword">in</span> ret<span class="token punctuation">:</span> exp_sum <span class="token operator">+=</span> <span class="token builtin">float</span><span class="token punctuation">(</span>i<span class="token punctuation">)</span> <span class="token keyword">return</span> exp_sum <span class="token keyword">def</span> <span class="token function">mul_div</span><span class="token punctuation">(</span>exp<span class="token punctuation">)</span><span class="token punctuation">:</span> <span class="token comment"># 计算乘除法</span> <span class="token keyword">while</span> <span class="token boolean">True</span><span class="token punctuation">:</span> ret <span class="token operator">=</span> re<span class="token punctuation">.</span>search<span class="token punctuation">(</span><span class="token string">"\d+(?:\.\d+)?[/*]-?\d+(?:\.\d+)?"</span><span class="token punctuation">,</span> exp<span class="token punctuation">)</span> <span class="token comment"># 用的是search,所以从左往右匹配到第一项就返回结果</span> <span class="token keyword">if</span> ret<span class="token punctuation">:</span> atmo_exp <span class="token operator">=</span> ret<span class="token punctuation">.</span>group<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token comment"># 分组取出原子每一项</span> res <span class="token operator">=</span> atmo_cal<span class="token punctuation">(</span>atmo_exp<span class="token punctuation">)</span> <span class="token comment"># 调用原子计算器,打印结果为"-22.0"</span> <span class="token comment"># "2-1*-22+3-4/-5" "-22.0" 替换原式子中的位置即:"2--22.0-3-4/-5"</span> exp <span class="token operator">=</span> exp<span class="token punctuation">.</span>replace<span class="token punctuation">(</span>atmo_exp<span class="token punctuation">,</span> res<span class="token punctuation">)</span> <span class="token comment"># 参数位置 旧的,新的 将旧的替换成新的</span> <span class="token keyword">else</span><span class="token punctuation">:</span> <span class="token comment"># 2--22.0-3--0.8 乘除法都运算完毕了</span> <span class="token keyword">return</span> exp <span class="token keyword">def</span> <span class="token function">format</span><span class="token punctuation">(</span>exp<span class="token punctuation">)</span><span class="token punctuation">:</span> exp <span class="token operator">=</span> exp<span class="token punctuation">.</span>replace<span class="token punctuation">(</span><span class="token string">'--'</span><span class="token punctuation">,</span> <span class="token string">'+'</span><span class="token punctuation">)</span> exp <span class="token operator">=</span> exp<span class="token punctuation">.</span>replace<span class="token punctuation">(</span><span class="token string">'+-'</span><span class="token punctuation">,</span> <span class="token string">'-'</span><span class="token punctuation">)</span> exp <span class="token operator">=</span> exp<span class="token punctuation">.</span>replace<span class="token punctuation">(</span><span class="token string">'-+'</span><span class="token punctuation">,</span> <span class="token string">'-'</span><span class="token punctuation">)</span> exp <span class="token operator">=</span> exp<span class="token punctuation">.</span>replace<span class="token punctuation">(</span><span class="token string">'++'</span><span class="token punctuation">,</span> <span class="token string">'+'</span><span class="token punctuation">)</span> <span class="token keyword">return</span> exp <span class="token keyword">def</span> <span class="token function">cal</span><span class="token punctuation">(</span>exp<span class="token punctuation">)</span><span class="token punctuation">:</span> <span class="token comment"># 将乘法或者除法匹配出来;"2-1*-22-3-4/-5" 用来计算用的</span> exp <span class="token operator">=</span> mul_div<span class="token punctuation">(</span>exp<span class="token punctuation">)</span> <span class="token comment"># 调用乘除法函数</span> exp <span class="token operator">=</span> <span class="token builtin">format</span><span class="token punctuation">(</span>exp<span class="token punctuation">)</span> <span class="token comment"># 调用格式化函数后:2+22.0-3+0.8</span> exp_sum <span class="token operator">=</span> add_sub<span class="token punctuation">(</span>exp<span class="token punctuation">)</span> <span class="token comment"># 调用计算加法的函数 21.8</span> <span class="token keyword">return</span> exp_sum <span class="token comment"># 返回结果</span> <span class="token comment"># print(cal("2-1*-22-3-4/-5"))</span> <span class="token keyword">def</span> <span class="token function">main</span><span class="token punctuation">(</span>exp<span class="token punctuation">)</span><span class="token punctuation">:</span> <span class="token comment"># 主函数</span> exp <span class="token operator">=</span> exp<span class="token punctuation">.</span>replace<span class="token punctuation">(</span><span class="token string">" "</span><span class="token punctuation">,</span> <span class="token string">""</span><span class="token punctuation">)</span> <span class="token comment"># 去掉用户输入内容的空格</span> <span class="token keyword">while</span> <span class="token boolean">True</span><span class="token punctuation">:</span> ret <span class="token operator">=</span> re<span class="token punctuation">.</span>search<span class="token punctuation">(</span><span class="token string">"\([^()]+\)"</span><span class="token punctuation">,</span> exp<span class="token punctuation">)</span> <span class="token comment"># (-40/5)</span> <span class="token keyword">if</span> ret<span class="token punctuation">:</span> inner_bracket <span class="token operator">=</span> ret<span class="token punctuation">.</span>group<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token comment"># 这里可能得到各种运算</span> res <span class="token operator">=</span> <span class="token builtin">str</span><span class="token punctuation">(</span>cal<span class="token punctuation">(</span>inner_bracket<span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment"># print(inner_bracket,type(res))</span> exp <span class="token operator">=</span> exp<span class="token punctuation">.</span>replace<span class="token punctuation">(</span>inner_bracket<span class="token punctuation">,</span> res<span class="token punctuation">)</span> <span class="token comment"># print(exp) 再格式化下 1-2*((60-30+-8.0*(9-2*5/3+7/3*99/4*2998+10*568/14))-(-4*3)/(16-3*2))</span> exp <span class="token operator">=</span> <span class="token builtin">format</span><span class="token punctuation">(</span>exp<span class="token punctuation">)</span> <span class="token comment"># print(exp)</span> <span class="token keyword">else</span><span class="token punctuation">:</span> <span class="token keyword">break</span> <span class="token comment"># print(exp,type(exp)) ;1-2*-1388335.8476190479 <class 'str'></span> <span class="token keyword">return</span> cal<span class="token punctuation">(</span>exp<span class="token punctuation">)</span> s <span class="token operator">=</span> <span class="token string">'1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2) )'</span> ret <span class="token operator">=</span> main<span class="token punctuation">(</span>s<span class="token punctuation">)</span> <span class="token keyword">print</span><span class="token punctuation">(</span>ret<span class="token punctuation">,</span> <span class="token builtin">type</span><span class="token punctuation">(</span>ret<span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token builtin">eval</span><span class="token punctuation">(</span>s<span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token builtin">type</span><span class="token punctuation">(</span><span class="token builtin">eval</span><span class="token punctuation">(</span>s<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment"># 用户可能再用到,所以像eval一样返回原来的格式</span> <span class="token comment"># 2776672.6952380957 <class 'float'></span> <span class="token comment"># 2776672.6952380957 <class 'float'></span> </code></pre> </div> </div> </div> </div> </div> <!--PC和WAP自适应版--> <div id="SOHUCS" sid="1274491463031341056"></div> <script type="text/javascript" src="/views/front/js/chanyan.js"></script> <!-- 文章页-底部 动态广告位 --> <div class="youdao-fixed-ad" id="detail_ad_bottom"></div> </div> <div class="col-md-3"> <div class="row" id="ad"> <!-- 文章页-右侧1 动态广告位 --> <div id="right-1" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_1"> </div> </div> <!-- 文章页-右侧2 动态广告位 --> <div id="right-2" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_2"></div> </div> <!-- 文章页-右侧3 动态广告位 --> <div id="right-3" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_3"></div> </div> </div> </div> </div> </div> </div> <div class="container"> <h4 class="pt20 mb15 mt0 border-top">你可能感兴趣的:(Python学习)</h4> <div id="paradigm-article-related"> <div class="recommend-post mb30"> <ul class="widget-links"> <li><a href="/article/1835005152646492160.htm" title="python学习第七节:正则表达式" target="_blank">python学习第七节:正则表达式</a> <span class="text-muted">一只会敲代码的小灰灰</span> <a class="tag" taget="_blank" href="/search/python%E5%AD%A6%E4%B9%A0/1.htm">python学习</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/1.htm">正则表达式</a> <div>python学习第七节:正则表达式正则表达式基本上在所有开发语言中都会使用到,在python中尤为重要。当我们使用python开发爬虫程序将目标网页扒下来之后我们要从网页中解析出我们想要的信息,这个时候就需要正则表达式去进行匹配。importrere的常量re模块中有9个常量,常量的值都是int类型!(知道就行)修饰符描述re.l使匹配对大小写不敏感re.L做本地化识别(locale-aware)</div> </li> <li><a href="/article/1834660745795694592.htm" title="Python学习指南——1.常用库说明" target="_blank">Python学习指南——1.常用库说明</a> <span class="text-muted">r135792uuuu</span> <a class="tag" taget="_blank" href="/search/python-%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/1.htm">python-机器学习</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>说在前面在开发之前,要去python库官网上查看是否有帮助的库。结合百度和pypi.org网站直接寻找需要的库。库安装方法:1pip安装2.文件安装:UCI页面需要https://www.lfd.uci.edu/~gohlke/pythonlibs或者conda提供的那些网站也行。文件安装:下载UCI、whl文件之后,又要使用pipinstall文件来安装放到lib文件夹vscode特殊:通常把要</div> </li> <li><a href="/article/1834648559337697280.htm" title="Python学习笔记-Day05" target="_blank">Python学习笔记-Day05</a> <span class="text-muted">snape00</span> <div>Python学习笔记Day_05-构造程序逻辑作者的话学完前面的几个章节后,我觉得有必要在这里带大家做一些练习来巩固之前所学的知识,虽然迄今为止我们学习的内容只是Python的冰山一角,但是这些内容已经足够我们来构建程序中的逻辑。对于编程语言的初学者来说,在学习了Python的核心语言元素(变量、类型、运算符、表达式、分支结构、循环结构等)之后,必须做的一件事情就是尝试用所学知识去解决现实中的问题</div> </li> <li><a href="/article/1834580895869267968.htm" title="小猿圈python学习-内置函数" target="_blank">小猿圈python学习-内置函数</a> <span class="text-muted">小猿圈IT教育</span> <div>Python的len为什么你可以直接用?肯定是解释器启动时就定义好了内置参数详解https://docs.python.org/3/library/functions.html?highlight=built#ascii每个函数的作用我都帮你标好了abs#求绝对值all#ReturnTrueifbool(x)isTrueforallvaluesxintheiterable.Iftheiterabl</div> </li> <li><a href="/article/1834454077312954368.htm" title="python学习笔记第5节-类和函数" target="_blank">python学习笔记第5节-类和函数</a> <span class="text-muted">梁鋐俐</span> <div>我们在前面的学习中学会了一个叫type()的函数,用它来判断变量的类型,变量和它当下存储的数据绑定在一起。例如a=[4,5,6,7]print(type(a))输出a=range(10,20,2)print(type(a))输出a=Trueprint(type(a))输出a={‘a54’:56}print(type(a))输出a={‘a54’,56}print(type(a))输出a=‘tyuio</div> </li> <li><a href="/article/1834433614876602368.htm" title="Python学习笔记--列表、字典、集合、元组" target="_blank">Python学习笔记--列表、字典、集合、元组</a> <span class="text-muted">小黄酥</span> <a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a> <div>Python学习笔记43-列表#列表主要是用来存储多个数据.列表是有序的集合list_1=[]#创建一个空的列表list_2=[12,34,56,True,'abc']#创建一个列表#列表的访问,通过下标访问列表中的元素,下标默认从0开始,0表示第一个元素,-1表示最后一个元素list_3=[1,2,3,False,True,'abc']print(list_3[0])#1print(list_3</div> </li> <li><a href="/article/1834322253261664256.htm" title="「python学习——小白篇」python函数中不定长参数的写法" target="_blank">「python学习——小白篇」python函数中不定长参数的写法</a> <span class="text-muted">小天真_5eeb</span> <div>那么作为新手该如何上手这门语言?一切不敲代码的学编程手段都是扯淡先来给大家来一个福利吧!python语法入门视频免费共享出来加q-u-n--227+435+450获取</div> </li> <li><a href="/article/1834201285583269888.htm" title="python学习——conda install Python库时报PackagesNotFoundError:的错误的解决方案,很实用" target="_blank">python学习——conda install Python库时报PackagesNotFoundError:的错误的解决方案,很实用</a> <span class="text-muted">_Oak_Tree_</span> <a class="tag" taget="_blank" href="/search/python%E5%9F%BA%E7%A1%80/1.htm">python基础</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>安装完成Anaconda之后,我们可以在AnacondaPrompt交互式窗口中通过“condainstall库名称”实现Python库的安装,但是有时候在运用该命令进行安装时会提示PackagesNotFoundError:Thefollowingpackagesarenotavailablefromcurrentchannels:的错误,现在以Pydap库的安装为例,提供在Windows系统下</div> </li> <li><a href="/article/1833847177542201344.htm" title="Python学习:执行系统shell命令" target="_blank">Python学习:执行系统shell命令</a> <span class="text-muted">chaos-god</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/shell/1.htm">shell</a> <div>1.问题python可以作为shell替代,代码比较直观,易于维护。python支持调用外部shell命令。不过,这个问题没有看上去简单,要完美的解决此问题,比较复杂,就连标准库也不见得处理得很好。2.方案2.1.方案一首先最简单的方法就是调用system方法,直接执行系统shell命令,代码如下:importosos.system('ls-l')system主要问题,就是无法获取shell命令的</div> </li> <li><a href="/article/1833710380384350208.htm" title="25道Python练手题(附详细答案),赶紧收藏!Python入门|Python学习" target="_blank">25道Python练手题(附详细答案),赶紧收藏!Python入门|Python学习</a> <span class="text-muted">豆本-豆豆奶</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E6%8C%96%E6%8E%98/1.htm">数据挖掘</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a> <div>题目1:水仙花数水仙花数(Narcissisticnumber)也被称为超完全数字不变数(pluperfectdigitalinvariant,PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrongnumber)水仙花数是指一个3位数,它的每个位上的数字的3次幂之和等于它本身。例如:1^3+5^3+3^3=153。foriinrange(100,1000):i1=i//100#取</div> </li> <li><a href="/article/1833348868046155776.htm" title="python学习笔记08_赋值运算、逻辑运算、表达式、短路原则" target="_blank">python学习笔记08_赋值运算、逻辑运算、表达式、短路原则</a> <span class="text-muted">flamingocc</span> <div>python笔记081.赋值运算符num+=1等价于num=num+1num-=1等价于num=num-1num*=1等价于num=num*1num/=1等价于num=num/1num//2等价于num=num//2num%=2等价于num/2的余数num**2等价于num=num*num2.逻辑运算符逻辑运算符包含:not、and、or2.1and的用法:(且、并且)写法:条件1and条件2eg</div> </li> <li><a href="/article/1833317426138279936.htm" title="Python学习笔记(三):列表的定义、访问及修改" target="_blank">Python学习笔记(三):列表的定义、访问及修改</a> <span class="text-muted">RANDY_Sw</span> <a class="tag" taget="_blank" href="/search/Python%E5%85%A5%E9%97%A8/1.htm">Python入门</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>今天学习了有关列表的定义、访问及修改的方法,在此整理一下。列表的定义与访问name_list=['zhangsan','lisi','wangwu']#创建一个列表name_list[0]='xiaobai'#修改列表中的单个元素print(name_list)#遍历的方式打印列表1foriteminname_list:print(item)#遍历的方式打印列表2i=0foriinrange(le</div> </li> <li><a href="/article/1832961107195686912.htm" title="Python学习2:一定要注意用pycharm创建Python package和Pythonfile而不是普通路径和文件" target="_blank">Python学习2:一定要注意用pycharm创建Python package和Pythonfile而不是普通路径和文件</a> <span class="text-muted">土小帽软件测试</span> <a class="tag" taget="_blank" href="/search/Python%E5%AD%A6%E4%B9%A0/1.htm">Python学习</a> <div>2019年5月7日23:30:02今天久违地再续上断了好久差点又半途而废的Python基础,结果跟着写继承,明明引入了父类,可还是运行报错,下面父类是Person,子类是Student,模块文件名小写。person文件:classPerson(object):def__init__(self,name,age):self.name=nameself.age=agedefrun(self):prin</div> </li> <li><a href="/article/1832872608664743936.htm" title="Linux中检查网络问题的常用命令" target="_blank">Linux中检查网络问题的常用命令</a> <span class="text-muted">程序员喵哥</span> <a class="tag" taget="_blank" href="/search/Linux/1.htm">Linux</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/php/1.htm">php</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a> <div>更多Python学习内容:ipengtao.com在Linux系统中,网络问题是常见的挑战之一。无论是服务器管理员还是普通用户,都可能遇到各种网络故障,如连接问题、DNS解析问题、网络延迟等。为了快速诊断和解决这些问题,掌握一些常用的网络故障排查命令是至关重要的。本文将介绍一些在Linux系统中常用的网络故障排查命令,并提供详细的示例代码,方便更好地理解和应用这些命令。ping命令ping命令是最</div> </li> <li><a href="/article/1832625387834798080.htm" title="python安全渗透笔记" target="_blank">python安全渗透笔记</a> <span class="text-muted">红云谈安全</span> <a class="tag" taget="_blank" href="/search/python%E7%BC%96%E7%A8%8B%E5%AD%A6%E4%B9%A0/1.htm">python编程学习</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%AE%89%E5%85%A8/1.htm">安全</a> <div>Python学习python常见错误UnicodeDecodeError:‘gbk’codeccan’tdecodebyte0x8cinposition22:illegalmultibytesequence//打开的文件未编码encoding='UTF-8'expectedanindentedblock未缩进,ifforcontinue又进入一次新的循环%将其他变量置入字符串特定位置以生成新字符串</div> </li> <li><a href="/article/1832505684529344512.htm" title="Pyhton抓取BOSS直聘职位描述和数据清洗,很简单没有那么难" target="_blank">Pyhton抓取BOSS直聘职位描述和数据清洗,很简单没有那么难</a> <span class="text-muted">嗨学编程</span> <div>一、抓取详细的职位描述信息详情页分析Python学习资料或者需要代码、视频加Python学习群:960410445在详情页中,比较重要的就是职位描述和工作地址这两个由于在页面代码中岗位职责和任职要求是在一个div中的,所以在抓的时候就不太好分,后续需要把这个连体婴儿,分开分析。爬虫用到的库使用的库有:requestsBeautifulSoup4pymongoPython代码代码easy,初学者都能</div> </li> <li><a href="/article/1832474727894052864.htm" title="Python基础(十二):字典的详细讲解" target="_blank">Python基础(十二):字典的详细讲解</a> <span class="text-muted">m0_60707685</span> <a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E5%91%98/1.htm">程序员</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a> <div>感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的:①2000多本Python电子书(主流和经典的书籍应该都有了)②Python标准库资料(最全中文版)③项目源码(四五十个有趣且经典的练手项目及源码)④Python基础入门、爬虫、web开发、大数据分析方面的视频(适合小白学习)⑤Python学习路线图(告别不入流的学习)网上学习资料一大堆,但如果学到的知识不成体系,遇到问题</div> </li> <li><a href="/article/1832474728544169984.htm" title="Python基础(十五):推导式的讲解_python基础(十五) 推导式的讲解" target="_blank">Python基础(十五):推导式的讲解_python基础(十五) 推导式的讲解</a> <span class="text-muted">m0_60707685</span> <a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E5%91%98/1.htm">程序员</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a> <div>(1)Python所有方向的学习路线(新版)这是我花了几天的时间去把Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。最近我才对这些路线做了一下新的更新,知识体系更全面了。(2)Python学习视频包含了Python入门、爬虫、数据分析和web开发的学习视频,总共100多个,虽然没有那么全面,但是对于入门</div> </li> <li><a href="/article/1832205815755403264.htm" title="socket网络编程python_python学习-socket网络编程" target="_blank">socket网络编程python_python学习-socket网络编程</a> <span class="text-muted">张文岳</span> <div>作业:多用户在线的FTP程序要求:用户加密认证允许同时多用户登录每个用户有自己的家目录,且只能访问自己的家目录对用户进行磁盘配额,每个用户的可用空间不同允许用户在ftpserver上随意切换目录允许用户查看当前目录下文件允许上传和下载文件,保证文件一致性文件传输过程中显示进度条附加功能:支持文件的断点续传(仅下载)README###功能实现作业:开发一个支持多用户在线的FTP程序要求:用户加密认证</div> </li> <li><a href="/article/1832085690901426176.htm" title="python学习第六节:使用python制作九九乘法表和学生管理系统" target="_blank">python学习第六节:使用python制作九九乘法表和学生管理系统</a> <span class="text-muted">一只会敲代码的小灰灰</span> <a class="tag" taget="_blank" href="/search/%E7%BB%8F%E9%AA%8C%E6%80%BB%E7%BB%93/1.htm">经验总结</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/pycharm/1.htm">pycharm</a> <div>python学习第六节:使用python制作九九乘法表和学生管理系统通过前面五节的了解,已经大概知道python的语法以及基础函数,下面是简单的两个小程序。不会做没关系,看得懂就可以了,如果能够自己加工举一反三那就更好了。ps:前面五节只是简单讲解了python的基础语法和函数,也就是混个脸熟,没有进行深入讲解,如果展开来讲的话每一个单独的语法和函数都能将几大章,而很多语法和函数的用法我们根本用不</div> </li> <li><a href="/article/1831706236177969152.htm" title="python函数全局变量和局部变量_Python学习(六)—— 函数、全局变量与局部变量..." target="_blank">python函数全局变量和局部变量_Python学习(六)—— 函数、全局变量与局部变量...</a> <span class="text-muted">weixin_39654917</span> <div>函数函数的定义1deftest(x):2"Thefunctiondefinition"3x+=14returnxdef:定义函数的关键字test:函数名():内可定义形参“”:文档描述,非必要,但添加后可使得函数更易理解x+=1:泛指代码块或程序处理逻辑,最好不要过多,让函数的功能简洁明了return:定义返回值调用运行:可以带参数也可以不带函数名()1deftest(x):2"Thefuncti</div> </li> <li><a href="/article/1831480701413847040.htm" title="python学习12:对txt/text类型的文件进行读写" target="_blank">python学习12:对txt/text类型的文件进行读写</a> <span class="text-muted">一名在八月份找工作的测试员</span> <a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a> <div>1.对txt类型的文件进行读写1)对text文件的操作打开文件-读/写文件-关闭文件1.1)打开文件open()1.2)读/写文件读:read(),readline(),rendlines()写:write()1.3)关闭文件close()#案例1:(读):mode='r'#filename='test004.txt'#同一个文件夹filename=r'D:\stdutyZiLiao\python</div> </li> <li><a href="/article/1831376709715324928.htm" title="Python学习日记(Page.8)" target="_blank">Python学习日记(Page.8)</a> <span class="text-muted">空手套不到_白狼</span> <a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/pycharm/1.htm">pycharm</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>今日整理以便日后查看。如有错误欢迎指出。今天聊一下while循环语句。格式:while条件:条件满足时,做的事情1条件满足时,做的事情2条件满足时,做的事情3......案例:题目为求1累计加到100的和i=1sum=0whilei<=100sum+=ii+=1print("1到100的和为:%d"%sum)</div> </li> <li><a href="/article/1831343694318497792.htm" title="基于python的游戏玩家行为数据分析与预测_python有付费数据如何做简单预测(1)" target="_blank">基于python的游戏玩家行为数据分析与预测_python有付费数据如何做简单预测(1)</a> <span class="text-muted">2401_84538391</span> <a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E5%91%98/1.htm">程序员</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E6%B8%B8%E6%88%8F/1.htm">游戏</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90/1.htm">数据分析</a> <div>学好Python不论是就业还是做副业赚钱都不错,但要学会Python还是要有一个学习规划。最后大家分享一份全套的Python学习资料,给那些想学习Python的小伙伴们一点帮助!一、Python所有方向的学习路线Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。二、学习软件工欲善其</div> </li> <li><a href="/article/1830824867189059584.htm" title="Python常用的10个自动化脚本(附详细源码)!" target="_blank">Python常用的10个自动化脚本(附详细源码)!</a> <span class="text-muted">进击的六角龙</span> <a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E8%87%AA%E5%8A%A8%E5%8C%96/1.htm">自动化</a><a class="tag" taget="_blank" href="/search/%E8%87%AA%E5%8A%A8%E5%8C%96%E5%8A%9E%E5%85%AC/1.htm">自动化办公</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>前言Python是一种强大的编程语言,非常适合自动化各种任务。以下列出了Python常用于自动化的10个脚本示例,涵盖了文件管理、网络操作、数据处理等多个方面(文末附python学习资料)。1.文件备份脚本这个脚本可以定期备份指定目录下的所有文件到另一个位置。importshutilimportosimportdatetimedefbackup_files(src,dst):timestamp=d</div> </li> <li><a href="/article/1830566595953520640.htm" title="Python递归爬取今日头条指定用户一个月内发表的所有文章,视频,微头条(2)" target="_blank">Python递归爬取今日头条指定用户一个月内发表的所有文章,视频,微头条(2)</a> <span class="text-muted">2401_84139095</span> <a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E5%91%98/1.htm">程序员</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的:①2000多本Python电子书(主流和经典的书籍应该都有了)②Python标准库资料(最全中文版)③项目源码(四五十个有趣且经典的练手项目及源码)④Python基础入门、爬虫、web开发、大数据分析方面的视频(适合小白学习)⑤Python学习路线图(告别不入流的学习)网上学习资料一大堆,但如果学到的知识不成体系,遇到问题</div> </li> <li><a href="/article/1830470814521192448.htm" title="周报 | 24.8.26-24.9.1文章汇总" target="_blank">周报 | 24.8.26-24.9.1文章汇总</a> <span class="text-muted">双木的木</span> <a class="tag" taget="_blank" href="/search/python%E6%8B%93%E5%B1%95%E5%AD%A6%E4%B9%A0/1.htm">python拓展学习</a><a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E6%8B%93%E5%B1%95%E9%98%85%E8%AF%BB/1.htm">深度学习拓展阅读</a><a class="tag" taget="_blank" href="/search/%E7%9B%AE%E6%A0%87%E6%A3%80%E6%B5%8B/1.htm">目标检测</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E8%A7%86%E8%A7%89/1.htm">计算机视觉</a><a class="tag" taget="_blank" href="/search/gpt/1.htm">gpt</a><a class="tag" taget="_blank" href="/search/transformer/1.htm">transformer</a><a class="tag" taget="_blank" href="/search/stable/1.htm">stable</a><a class="tag" taget="_blank" href="/search/diffusion/1.htm">diffusion</a> <div>为了更好地整理文章和发表接下来的文章,以后每周都汇总一份周报。周报|24.8.19-24.8.25文章汇总-CSDN博客python|提升代码迭代速度的Python重载方法-CSDN博客机器学习算法与Python学习|黑匣子被打开了?能玩的Transformer可视化解释工具!_研究别人的黑盒算法机器学习python-CSDN博客极市平台|语言图像模型大一统!Meta将Transformer和Di</div> </li> <li><a href="/article/1830044753597657088.htm" title="Python学习日记(Pag.7)" target="_blank">Python学习日记(Pag.7)</a> <span class="text-muted">空手套不到_白狼</span> <a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/pycharm/1.htm">pycharm</a> <div>拿猜数字的案例说一下判断语句的嵌套。如有错误欢迎指正。题目:要求如下:1.数字随机产生,范围为1-102.有3次机会猜测数字,通过三层嵌套判断实现3.每次都猜不中的话,会提示猜大了还是小了示例:importrandomnum=random.randint(1,10)#随机生成1-10以内的数字guess_num=int(input("您所猜测的数字是:"))ifguess_num==num:pri</div> </li> <li><a href="/article/1829665466616999936.htm" title="Python学习日志(1)—— IDE" target="_blank">Python学习日志(1)—— IDE</a> <span class="text-muted">Strawberry96</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/ide/1.htm">ide</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>IDE,集成开发环境,帮助我们进行高效的开发。Python开发——IDE应用场景选择:适合本地开发:VSCode:适合初学者,轻量级PyCharm:适合有经验的程序员,多人合作,重量级适合远程开发:Jupter:适合数学科学家,AI开发VSCode和PyCharm的安装比较简单。Jupter是第一次听说,在进行AI的开发或者是图片处理之类的,可以在远程开发。安装Jupter//3.12是对应的py</div> </li> <li><a href="/article/1829661054657982464.htm" title="Python学习和面试中的常见问题及答案" target="_blank">Python学习和面试中的常见问题及答案</a> <span class="text-muted">写代码的M教授</span> <a class="tag" taget="_blank" href="/search/Python%E5%AD%A6%E4%B9%A0%E8%AE%A1%E5%88%92/1.htm">Python学习计划</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a> <div>整理了一些关于Python和机器学习算法的高级问题及其详细答案。这些问题涵盖了多个方面,包括数据处理、模型训练、评估、优化和实际应用。一、Python编程问题解释Python中的装饰器(Decorators)是什么?它们的作用是什么?答案:装饰器是一种高阶函数,能够在不修改函数定义的情况下扩展或修改函数的行为。它们通常用于日志记录、权限验证、缓存等场景。使用@decorator_name语法将装饰</div> </li> <li><a href="/article/96.htm" title="怎么样才能成为专业的程序员?" target="_blank">怎么样才能成为专业的程序员?</a> <span class="text-muted">cocos2d-x小菜</span> <a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B/1.htm">编程</a><a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a> <div>  如何要想成为一名专业的程序员?仅仅会写代码是不够的。从团队合作去解决问题到版本控制,你还得具备其他关键技能的工具包。当我们询问相关的专业开发人员,那些必备的关键技能都是什么的时候,下面是我们了解到的情况。   关于如何学习代码,各种声音很多,然后很多人就被误导为成为专业开发人员懂得一门编程语言就够了?!呵呵,就像其他工作一样,光会一个技能那是远远不够的。如果你想要成为</div> </li> <li><a href="/article/223.htm" title="java web开发 高并发处理" target="_blank">java web开发 高并发处理</a> <span class="text-muted">BreakingBad</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a><a class="tag" taget="_blank" href="/search/%E5%B9%B6%E5%8F%91/1.htm">并发</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91/1.htm">开发</a><a class="tag" taget="_blank" href="/search/%E5%A4%84%E7%90%86/1.htm">处理</a><a class="tag" taget="_blank" href="/search/%E9%AB%98/1.htm">高</a> <div>java处理高并发高负载类网站中数据库的设计方法(java教程,java处理大量数据,java高负载数据) 一:高并发高负载类网站关注点之数据库 没错,首先是数据库,这是大多数应用所面临的首个SPOF。尤其是Web2.0的应用,数据库的响应是首先要解决的。 一般来说MySQL是最常用的,可能最初是一个mysql主机,当数据增加到100万以上,那么,MySQL的效能急剧下降。常用的优化措施是M-S(</div> </li> <li><a href="/article/350.htm" title="mysql批量更新" target="_blank">mysql批量更新</a> <span class="text-muted">ekian</span> <a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a> <div>mysql更新优化: 一版的更新的话都是采用update set的方式,但是如果需要批量更新的话,只能for循环的执行更新。或者采用executeBatch的方式,执行更新。无论哪种方式,性能都不见得多好。 三千多条的更新,需要3分多钟。 查询了批量更新的优化,有说replace into的方式,即: replace into tableName(id,status) values</div> </li> <li><a href="/article/477.htm" title="微软BI(3)" target="_blank">微软BI(3)</a> <span class="text-muted">18289753290</span> <a class="tag" taget="_blank" href="/search/%E5%BE%AE%E8%BD%AFBI+SSIS/1.htm">微软BI SSIS</a> <div>1) Q:该列违反了完整性约束错误;已获得 OLE DB 记录。源:“Microsoft SQL Server Native Client 11.0” Hresult: 0x80004005 说明:“不能将值 NULL 插入列 'FZCHID',表 'JRB_EnterpriseCredit.dbo.QYFZCH';列不允许有 Null 值。INSERT 失败。”。 A:一般这类问题的存在是 </div> </li> <li><a href="/article/604.htm" title="Java中的List" target="_blank">Java中的List</a> <span class="text-muted">g21121</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>        List是一个有序的 collection(也称为序列)。此接口的用户可以对列表中每个元素的插入位置进行精确地控制。用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素。         与 set 不同,列表通常允许重复</div> </li> <li><a href="/article/731.htm" title="读书笔记" target="_blank">读书笔记</a> <span class="text-muted">永夜-极光</span> <a class="tag" taget="_blank" href="/search/%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0/1.htm">读书笔记</a> <div>   1.  K是一家加工厂,需要采购原材料,有A,B,C,D 4家供应商,其中A给出的价格最低,性价比最高,那么假如你是这家企业的采购经理,你会如何决策?          传统决策: A:100%订单  B,C,D:0%     &nbs</div> </li> <li><a href="/article/858.htm" title="centos 安装 Codeblocks" target="_blank">centos 安装 Codeblocks</a> <span class="text-muted">随便小屋</span> <a class="tag" taget="_blank" href="/search/codeblocks/1.htm">codeblocks</a> <div>1.安装gcc,需要c和c++两部分,默认安装下,CentOS不安装编译器的,在终端输入以下命令即可yum install gccyum install gcc-c++   2.安装gtk2-devel,因为默认已经安装了正式产品需要的支持库,但是没有安装开发所需要的文档.yum install gtk2* 3. 安装wxGTK    yum search w</div> </li> <li><a href="/article/985.htm" title="23种设计模式的形象比喻" target="_blank">23种设计模式的形象比喻</a> <span class="text-muted">aijuans</span> <a class="tag" taget="_blank" href="/search/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">设计模式</a> <div>1、ABSTRACT FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。麦当劳和肯德基就是生产鸡翅的Factory   工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也要做相应的修改。如:</div> </li> <li><a href="/article/1112.htm" title="开发管理 CheckLists" target="_blank">开发管理 CheckLists</a> <span class="text-muted">aoyouzi</span> <a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E7%AE%A1%E7%90%86+CheckLists/1.htm">开发管理 CheckLists</a> <div>开发管理 CheckLists(23) -使项目组度过完整的生命周期 开发管理 CheckLists(22) -组织项目资源 开发管理 CheckLists(21) -控制项目的范围开发管理 CheckLists(20) -项目利益相关者责任开发管理 CheckLists(19) -选择合适的团队成员开发管理 CheckLists(18) -敏捷开发 Scrum Master 工作开发管理 C</div> </li> <li><a href="/article/1239.htm" title="js实现切换" target="_blank">js实现切换</a> <span class="text-muted">百合不是茶</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/%E6%A0%8F%E7%9B%AE%E5%88%87%E6%8D%A2/1.htm">栏目切换</a> <div>js主要功能之一就是实现页面的特效,窗体的切换可以减少页面的大小,被门户网站大量应用思路: 1,先将要显示的设置为display:bisible 否则设为none 2,设置栏目的id ,js获取栏目的id,如果id为Null就设置为显示 3,判断js获取的id名字;再设置是否显示   代码实现:   html代码: <di</div> </li> <li><a href="/article/1366.htm" title="周鸿祎在360新员工入职培训上的讲话" target="_blank">周鸿祎在360新员工入职培训上的讲话</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/%E6%84%9F%E6%82%9F/1.htm">感悟</a><a class="tag" taget="_blank" href="/search/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86/1.htm">项目管理</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E7%94%9F/1.htm">人生</a><a class="tag" taget="_blank" href="/search/%E8%81%8C%E5%9C%BA/1.htm">职场</a> <div>        这篇文章也是最近偶尔看到的,考虑到原博客发布者可能将其删除等原因,也更方便个人查找,特将原文拷贝再发布的。“学东西是为自己的,不要整天以混的姿态来跟公司博弈,就算是混,我觉得你要是能在混的时间里,收获一些别的有利于人生发展的东西,也是不错的,看你怎么把握了”,看了之后,对这句话记忆犹新。  &</div> </li> <li><a href="/article/1493.htm" title="前端Web开发的页面效果" target="_blank">前端Web开发的页面效果</a> <span class="text-muted">Bill_chen</span> <a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a><a class="tag" taget="_blank" href="/search/Microsoft/1.htm">Microsoft</a> <div>1.IE6下png图片的透明显示: <img src="图片地址" border="0" style="Filter.Alpha(Opacity)=数值(100),style=数值(3)"/> 或在<head></head>间加一段JS代码让透明png图片正常显示。 2.<li>标</div> </li> <li><a href="/article/1620.htm" title="【JVM五】老年代垃圾回收:并发标记清理GC(CMS GC)" target="_blank">【JVM五】老年代垃圾回收:并发标记清理GC(CMS GC)</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/%E5%9E%83%E5%9C%BE%E5%9B%9E%E6%94%B6/1.htm">垃圾回收</a> <div>  CMS概述 并发标记清理垃圾回收(Concurrent Mark and Sweep GC)算法的主要目标是在GC过程中,减少暂停用户线程的次数以及在不得不暂停用户线程的请夸功能,尽可能短的暂停用户线程的时间。这对于交互式应用,比如web应用来说,是非常重要的。   CMS垃圾回收针对新生代和老年代采用不同的策略。相比同吞吐量垃圾回收,它要复杂的多。吞吐量垃圾回收在执</div> </li> <li><a href="/article/1747.htm" title="Struts2技术总结" target="_blank">Struts2技术总结</a> <span class="text-muted">白糖_</span> <a class="tag" taget="_blank" href="/search/struts2/1.htm">struts2</a> <div>  必备jar文件 早在struts2.0.*的时候,struts2的必备jar包需要如下几个: commons-logging-*.jar   Apache旗下commons项目的log日志包 freemarker-*.jar          </div> </li> <li><a href="/article/1874.htm" title="Jquery easyui layout应用注意事项" target="_blank">Jquery easyui layout应用注意事项</a> <span class="text-muted">bozch</span> <a class="tag" taget="_blank" href="/search/jquery/1.htm">jquery</a><a class="tag" taget="_blank" href="/search/%E6%B5%8F%E8%A7%88%E5%99%A8/1.htm">浏览器</a><a class="tag" taget="_blank" href="/search/easyui/1.htm">easyui</a><a class="tag" taget="_blank" href="/search/layout/1.htm">layout</a> <div>在jquery easyui中提供了easyui-layout布局,他的布局比较局限,类似java中GUI的border布局。下面对其使用注意事项作简要介绍:      如果在现有的工程中前台界面均应用了jquery easyui,那么在布局的时候最好应用jquery eaysui的layout布局,否则在表单页面(编辑、查看、添加等等)在不同的浏览器会出</div> </li> <li><a href="/article/2001.htm" title="java-拷贝特殊链表:有一个特殊的链表,其中每个节点不但有指向下一个节点的指针pNext,还有一个指向链表中任意节点的指针pRand,如何拷贝这个特殊链表?" target="_blank">java-拷贝特殊链表:有一个特殊的链表,其中每个节点不但有指向下一个节点的指针pNext,还有一个指向链表中任意节点的指针pRand,如何拷贝这个特殊链表?</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div> public class CopySpecialLinkedList { /** * 题目:有一个特殊的链表,其中每个节点不但有指向下一个节点的指针pNext,还有一个指向链表中任意节点的指针pRand,如何拷贝这个特殊链表? 拷贝pNext指针非常容易,所以题目的难点是如何拷贝pRand指针。 假设原来链表为A1 -> A2 ->... -> An,新拷贝</div> </li> <li><a href="/article/2128.htm" title="color" target="_blank">color</a> <span class="text-muted">Chen.H</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a> <div><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  "http://www.w3.org/TR/html4/loose.dtd">    <HTML>    <HEAD>&nbs</div> </li> <li><a href="/article/2255.htm" title="[信息与战争]移动通讯与网络" target="_blank">[信息与战争]移动通讯与网络</a> <span class="text-muted">comsci</span> <a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a> <div>      两个坚持:手机的电池必须可以取下来                光纤不能够入户,只能够到楼宇       建议大家找这本书看看:<&</div> </li> <li><a href="/article/2382.htm" title="oracle flashback query(闪回查询)" target="_blank">oracle flashback query(闪回查询)</a> <span class="text-muted">daizj</span> <a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/flashback+query/1.htm">flashback query</a><a class="tag" taget="_blank" href="/search/flashback+table/1.htm">flashback table</a> <div>在Oracle 10g中,Flash back家族分为以下成员: Flashback Database Flashback Drop Flashback Table Flashback Query(分Flashback Query,Flashback Version Query,Flashback Transaction Query) 下面介绍一下Flashback Drop 和Flas</div> </li> <li><a href="/article/2509.htm" title="zeus持久层DAO单元测试" target="_blank">zeus持久层DAO单元测试</a> <span class="text-muted">deng520159</span> <a class="tag" taget="_blank" href="/search/%E5%8D%95%E5%85%83%E6%B5%8B%E8%AF%95/1.htm">单元测试</a> <div>zeus代码测试正紧张进行中,但由于工作比较忙,但速度比较慢.现在已经完成读写分离单元测试了,现在把几种情况单元测试的例子发出来,希望有人能进出意见,让它走下去. 本文是zeus的dao单元测试: 1.单元测试直接上代码   package com.dengliang.zeus.webdemo.test; import org.junit.Test; import o</div> </li> <li><a href="/article/2636.htm" title="C语言学习三printf函数和scanf函数学习" target="_blank">C语言学习三printf函数和scanf函数学习</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/c/1.htm">c</a><a class="tag" taget="_blank" href="/search/printf/1.htm">printf</a><a class="tag" taget="_blank" href="/search/scanf/1.htm">scanf</a><a class="tag" taget="_blank" href="/search/language/1.htm">language</a> <div>printf函数 /* 2013年3月10日20:42:32 地点:北京潘家园 功能: 目的: 测试%x %X %#x %#X的用法 */ # include <stdio.h> int main(void) { printf("哈哈!\n"); // \n表示换行 int i = 10; printf</div> </li> <li><a href="/article/2763.htm" title="那你为什么小时候不好好读书?" target="_blank">那你为什么小时候不好好读书?</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/life/1.htm">life</a> <div>dady, 我今天捡到了十块钱, 不过我还给那个人了 good girl! 那个人有没有和你讲thank you啊 没有啦....他拉我的耳朵我才把钱还给他的, 他哪里会和我讲thank you   爸爸, 如果地上有一张5块一张10块你拿哪一张呢.... 当然是拿十块的咯... 爸爸你很笨的, 你不会两张都拿   爸爸为什么上个月那个人来跟你讨钱, 你告诉他没</div> </li> <li><a href="/article/2890.htm" title="iptables开放端口" target="_blank">iptables开放端口</a> <span class="text-muted">Fanyucai</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/iptables/1.htm">iptables</a><a class="tag" taget="_blank" href="/search/%E7%AB%AF%E5%8F%A3/1.htm">端口</a> <div>1,找到配置文件 vi /etc/sysconfig/iptables   2,添加端口开放,增加一行,开放18081端口 -A INPUT -m state --state NEW -m tcp -p tcp --dport 18081 -j ACCEPT   3,保存 ESC :wq!   4,重启服务 service iptables </div> </li> <li><a href="/article/3017.htm" title="Ehcache(05)——缓存的查询" target="_blank">Ehcache(05)——缓存的查询</a> <span class="text-muted">234390216</span> <a class="tag" taget="_blank" href="/search/%E6%8E%92%E5%BA%8F/1.htm">排序</a><a class="tag" taget="_blank" href="/search/ehcache/1.htm">ehcache</a><a class="tag" taget="_blank" href="/search/%E7%BB%9F%E8%AE%A1/1.htm">统计</a><a class="tag" taget="_blank" href="/search/query/1.htm">query</a> <div>缓存的查询 目录 1.    使Cache可查询 1.1     基于Xml配置 1.2     基于代码的配置 2     指定可搜索的属性 2.1     可查询属性类型 2.2 &</div> </li> <li><a href="/article/3144.htm" title="通过hashset找到数组中重复的元素" target="_blank">通过hashset找到数组中重复的元素</a> <span class="text-muted">jackyrong</span> <a class="tag" taget="_blank" href="/search/hashset/1.htm">hashset</a> <div>  如何在hashset中快速找到重复的元素呢?方法很多,下面是其中一个办法: int[] array = {1,1,2,3,4,5,6,7,8,8}; Set<Integer> set = new HashSet<Integer>(); for(int i = 0</div> </li> <li><a href="/article/3271.htm" title="使用ajax和window.history.pushState无刷新改变页面内容和地址栏URL" target="_blank">使用ajax和window.history.pushState无刷新改变页面内容和地址栏URL</a> <span class="text-muted">lanrikey</span> <a class="tag" taget="_blank" href="/search/history/1.htm">history</a> <div>后退时关闭当前页面 <script type="text/javascript"> jQuery(document).ready(function ($) {         if (window.history && window.history.pushState) {</div> </li> <li><a href="/article/3398.htm" title="应用程序的通信成本" target="_blank">应用程序的通信成本</a> <span class="text-muted">netkiller.github.com</span> <a class="tag" taget="_blank" href="/search/%E8%99%9A%E6%8B%9F%E6%9C%BA/1.htm">虚拟机</a><a class="tag" taget="_blank" href="/search/%E5%BA%94%E7%94%A8%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">应用服务器</a><a class="tag" taget="_blank" href="/search/%E9%99%88%E6%99%AF%E5%B3%B0/1.htm">陈景峰</a><a class="tag" taget="_blank" href="/search/netkiller/1.htm">netkiller</a><a class="tag" taget="_blank" href="/search/neo/1.htm">neo</a> <div>应用程序的通信成本 什么是通信 一个程序中两个以上功能相互传递信号或数据叫做通信。 什么是成本 这是是指时间成本与空间成本。 时间就是传递数据所花费的时间。空间是指传递过程耗费容量大小。 都有哪些通信方式 全局变量 线程间通信 共享内存 共享文件 管道 Socket 硬件(串口,USB) 等等 全局变量 全局变量是成本最低通信方法,通过设置</div> </li> <li><a href="/article/3525.htm" title="一维数组与二维数组的声明与定义" target="_blank">一维数组与二维数组的声明与定义</a> <span class="text-muted">恋洁e生</span> <a class="tag" taget="_blank" href="/search/%E4%BA%8C%E7%BB%B4%E6%95%B0%E7%BB%84/1.htm">二维数组</a><a class="tag" taget="_blank" href="/search/%E4%B8%80%E7%BB%B4%E6%95%B0%E7%BB%84/1.htm">一维数组</a><a class="tag" taget="_blank" href="/search/%E5%AE%9A%E4%B9%89/1.htm">定义</a><a class="tag" taget="_blank" href="/search/%E5%A3%B0%E6%98%8E/1.htm">声明</a><a class="tag" taget="_blank" href="/search/%E5%88%9D%E5%A7%8B%E5%8C%96/1.htm">初始化</a> <div>/**  *  */ package test20111005; /**  * @author FlyingFire  * @date:2011-11-18 上午04:33:36  * @author :代码整理  * @introduce :一维数组与二维数组的初始化  *summary:  */ public c</div> </li> <li><a href="/article/3652.htm" title="Spring Mybatis独立事务配置" target="_blank">Spring Mybatis独立事务配置</a> <span class="text-muted">toknowme</span> <a class="tag" taget="_blank" href="/search/mybatis/1.htm">mybatis</a> <div>在项目中有很多地方会使用到独立事务,下面以获取主键为例   (1)修改配置文件spring-mybatis.xml  <!-- 开启事务支持 -->  <tx:annotation-driven transaction-manager="transactionManager" />   &n</div> </li> <li><a href="/article/3779.htm" title="更新Anadroid SDK Tooks之后,Eclipse提示No update were found" target="_blank">更新Anadroid SDK Tooks之后,Eclipse提示No update were found</a> <span class="text-muted">xp9802</span> <a class="tag" taget="_blank" href="/search/eclipse/1.htm">eclipse</a> <div>使用Android SDK Manager 更新了Anadroid SDK Tooks 之后, 打开eclipse提示 This Android SDK requires Android Developer Toolkit version 23.0.0 or above, 点击Check for Updates  检测一会后提示 No update were found  </div> </li> </ul> </div> </div> </div> <div> <div class="container"> <div class="indexes"> <strong>按字母分类:</strong> <a href="/tags/A/1.htm" target="_blank">A</a><a href="/tags/B/1.htm" target="_blank">B</a><a href="/tags/C/1.htm" target="_blank">C</a><a href="/tags/D/1.htm" target="_blank">D</a><a href="/tags/E/1.htm" target="_blank">E</a><a href="/tags/F/1.htm" target="_blank">F</a><a href="/tags/G/1.htm" target="_blank">G</a><a href="/tags/H/1.htm" target="_blank">H</a><a href="/tags/I/1.htm" target="_blank">I</a><a href="/tags/J/1.htm" target="_blank">J</a><a href="/tags/K/1.htm" target="_blank">K</a><a href="/tags/L/1.htm" target="_blank">L</a><a href="/tags/M/1.htm" target="_blank">M</a><a href="/tags/N/1.htm" target="_blank">N</a><a href="/tags/O/1.htm" target="_blank">O</a><a href="/tags/P/1.htm" target="_blank">P</a><a href="/tags/Q/1.htm" target="_blank">Q</a><a href="/tags/R/1.htm" target="_blank">R</a><a href="/tags/S/1.htm" target="_blank">S</a><a href="/tags/T/1.htm" target="_blank">T</a><a href="/tags/U/1.htm" target="_blank">U</a><a href="/tags/V/1.htm" target="_blank">V</a><a href="/tags/W/1.htm" target="_blank">W</a><a href="/tags/X/1.htm" target="_blank">X</a><a href="/tags/Y/1.htm" target="_blank">Y</a><a href="/tags/Z/1.htm" target="_blank">Z</a><a href="/tags/0/1.htm" target="_blank">其他</a> </div> </div> </div> <footer id="footer" class="mb30 mt30"> <div class="container"> <div class="footBglm"> <a target="_blank" href="/">首页</a> - <a target="_blank" href="/custom/about.htm">关于我们</a> - <a target="_blank" href="/search/Java/1.htm">站内搜索</a> - <a target="_blank" href="/sitemap.txt">Sitemap</a> - <a target="_blank" href="/custom/delete.htm">侵权投诉</a> </div> <div class="copyright">版权所有 IT知识库 CopyRight © 2000-2050 E-COM-NET.COM , All Rights Reserved. <!-- <a href="https://beian.miit.gov.cn/" rel="nofollow" target="_blank">京ICP备09083238号</a><br>--> </div> </div> </footer> <!-- 代码高亮 --> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shCore.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shLegacy.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shAutoloader.js"></script> <link type="text/css" rel="stylesheet" href="/static/syntaxhighlighter/styles/shCoreDefault.css"/> <script type="text/javascript" src="/static/syntaxhighlighter/src/my_start_1.js"></script> </body> </html><script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>