|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
一 ,
模块级别 和 模式对象级别 对比
以search为例子
模块: re.search(r’正则表达式’ , ’要匹配的字符串’)
模式对象: search(r’要匹配的字符串’ , 开始位置 , 结束位置)
模块级别 和 模式对象级别 在我这里认知比较模糊感觉好蒙的
现在知道的就是模块级别多了个正则表达式 就是一行模式
模式级别就是多行模式 正则表达式在外面写过了 所以这里不用写了
二 ,
照片上的问题是这样的
url = 'http://tieba.baidu.com/p/23423625'
name = [each.split("/")[-1] for each in url]
name
['h', 't', 't', 'p', ':', '', '', 't', 'i', 'e', 'b', 'a', '.', 'b', 'a', 'i', 'd', 'u', '.', 'c', 'o', 'm', '', 'p', '', '2', '3', '4', '2', '3', '6', '2', '5']
这是我对图片的理解 鱼总说这个代码片段可以直接获得最后一段文件名为何我得到的是一坨乱码,搞不定,搞不懂
三 ,
我理解的
if __name__ == '__main__':
url = 'http://tieba.baidu.com/p/23423625'
get_img(open_url(url)
第三个问题在这里 这里是 从里面到外面依次执行吗 先执行 open_url(url) 暂时成为 BB 在执行 get_img(BB) 吗?
 先说答案吧:
- compile决定模块级别区别
- 字符串for循环是按字符
- 函数调用先算括号里面
这三个问题就彻底通了。
一、模块级别 vs 模式对象级别
模块级别
每次都会临时编译正则,用完就丢,适合一次性匹配。
模式对象级别:
- pattern = re.compile(r'正则')
- pattern.search('字符串', start, end)
复制代码
只编译一次,可重复使用,性能更好~
本质区别:
二、为什么你得到一坨字符?
你写的是:
- name = [each.split("/")[-1] for each in url]
复制代码
问题是:
字符串是可迭代的 → 会一个字符一个字符取。
所以 each 是:
当然结果乱七八糟。
正确写法:
三、嵌套函数执行顺序
get_img(open_url(url))
执行顺序:
先执行 open_url(url),得到返回值,再执行 get_img(返回值)。
规则:
|
-
这是课上的讲义
|