有没有想过是不是后面的没有星星等级呢?
我查到的资料说是re.match是从头开始匹配,如果开头没有,就匹配不上
def req_url(): req = urllib2.urlopen(url="https://coding.imooc.com/") # 打开图片列表页面 buf = req.read() # 读取图片列表页面 buf = buf.decode("utf-8") # 将Unicode 转换为字符串 python3中返回的是unicode url_list = re.findall(r"//.+szimg.+\.jpg", buf) # 提取图片url信息列表 return url_list def image_save(): i = 1 for url in req_url(): url = "http:" + url # 图片url拼接 # print(url + "\n") # 打印图片url f = open("album/" + str(i) + ".jpg", "wb") # 打开图片存放地址 以二进制格式打开,因为是图片 try: req = urllib2.urlopen(url) # 打开图片url buf = req.read() # 读取图片信息 f.write(buf) # 保存图片 i += 1 finally: if f: f.close()
打开方式用wb试一下
因为re.search函数里‘str1’表示的是字符串str1,而不是你上面定义的字符串变量str1,改为re.search(r'\d+',str1)就可以了。
\Aimooc表示以imooc开头的字符串,你后面匹配的是Aimooc开头的,所以匹配不到。这里\A表示的是以指定字符串开头,老师讲义里有讲
厉害了我的同学
小括号代表使用了分组,正则语法就是这样,不必纠结.就像python遇到xxx()就知道是调用函数一样.
\1 等于 前面括号里的匹配规则,就相当于 ([\w]+>)\1 = ([\w]+>)[\w]+>两次这个匹配规则.你可以理解成\1是个变量,保存了前面括号里的匹配语法并使用 即 \1 = (匹配语法), 使用\1 就是使用括号里语法 有帮助的话请给个最佳回答
讲的还是可以接受的
当然 我目前还在用windows 其他系统不清楚
网页更新了,你可以这样写:
先把//双斜杠打头的这些给抓出来,再在前面加上 added_str = 'http:'
再操作就行了
这表示一个编译好的正则表达式
当然你也可以这样写re.macth(正则表达式,字符串)
pattern 模式,我们定义的规则字符串
全新的,因为字符串是不可变的对象
用字符串操作,关键字切割试一下
程序在windows下运行需要写一个相对路径,如:把 str(i)+'\.jpg'变成'D:\\'+str(i)+'\.jpg',图片就会生成在D盘根目录下:)
需要转成list.
问题都描述不清楚? 什么问题?
我试了下可以啊(python3)
import urllib3 http = urllib3.PoolManager() html = http.request('get', 'https://www.imooc.com').data.decode() print(html)
ma = pa.findall(r'')
In [67]: ma = pa.findall(r'')
In [68]: print ma
['']
In [69]: ma = pa.findall(r' ')
In [70]: print ma
['', '']
看上面应该能明白了吧
import re
m1=re.match(r'[0-z]*','78erW90Er')
m2=re.match(r'[0-Z]*','78erW90Er')
print m1.group()
print m2.group()
#结果
#78erW90Er
#78
#ASCII是从数字到大写字母再到小写字母的,确实符合ASCII码表
*号表示紧跟在它前面的单元应匹配零次或多次,也就是说在单元[a-z]中匹配零次或者多次,而[A-Z]中只匹配以此,你输入的字符串连续两个大写字母就只能匹配第一个,后面的无法匹配。
VSCode 在https://pc.qq.com/detail/16/detail_22856.html下载,插件推荐在这里https://blog.fundebug.com/2018/07/24/vs-extensions/
心血来潮也想弄个一样的环境