2018年5月3日笔记

  • 常用的正则表达式匹配规则

\d  表示一个数字字符,等价于 [0-9]

\D  表示一个非数字字符,等价于 [^\d]

\s  表示一个空白字符,等价于 [<空格>\t\r\n\f\v]

\S  表示一个非空白字符,等价于 [^\s]
\w  表示一个单词字符(数字或字母),等价于 [A-Za-z0-9_]
\W  表示一个非单词字符,等价于 [^\w]
.   匹配除换行符\n之外的任意一个字符

.*  在一行内,贪婪(尽可能多)匹配任意个字符

.*?  在一行内,非贪婪(尽可能少)匹配任意个字符

(?P<name>pattern) 和 (P=name)  用来多次匹配同一模式的字符串,pattern为匹配该模式的正则表达式

  • 习题1:(爬虫)获取网页内容中的skuid字段和对应图片
 1 # 爬虫:获取网页内容中的skuid字段和对应图片
 2 import re
 3 import requests
 4
 5 url = "http://qwd.jd.com/fcgi-bin/qwd_searchitem_ex?skuid=26878432382%7C1658610413%7C26222795271%7C25168000024%7C11731514723%7C26348513019%7C20000220615%7C4813030%7C25965247088%7C5327182%7C19588651151%7C1780924%7C15495544751%7C10114188069%7C27036535156%7C10123099847%7C26016197600%7C10503200866%7C16675691362%7C15904713681"
 6
 7 session = request.session()
 8 r = session.get(url)
 9 html = r.text
10
11 reg = re.compile(r"\"skuid\":\"(\d+)\",\s+\"\S+\s+\"skuurl\"\S+\s+\"skuimgurl\":\"(\S+)\",")
12 result = reg.findall(html)
13 print(result)
  • 习题2:将指定文件中的每个Upstream和Location都保存为一个文件

    备注:先在regex101网站上,将相应的正则表达式写正确,然后再写python代码

匹配upstream的正则表达式如下:

匹配location的正则表达式如下:

python代码如下:

 1 import codecs
 2 import re
 3 import os
 4
 5 regUpstream =re.compile(r"\s*(upstream\s+(\S+)\s+{[^}]+})")
 6 with codecs.open("ga10.txt") as fu:
 7     textUpstream = regUpstream.findall(fu.read())
 8     if not os.path.exists("upstream"):
 9         os.mkdir("upstream")
10     os.chdir("upstream")
11     for item in textUpstream:
12         with codecs.open(item[1], "w") as fw:
13             fw.write(item[0])
14     os.chdir("..")
15
16
17 regLocation = re.compile(r"\s*(location\s+/(\S+)/\s+{[^}]+})")
18 with codecs.open("ga10.txt") as fl:
19     textLocation = regLocation.findall(fl.read())
20     if not os.path.exists("location"):
21         os.mkdir("location")
22     os.chdir("location")
23     for item in textLocation:
24         file = item[1] + ".location.conf"
25         with codecs.open(file, "w") as fw2:
26             fw2.write(item[0])

原文地址:https://www.cnblogs.com/karl-python/p/8993189.html

时间: 2024-07-31 23:02:06

2018年5月3日笔记的相关文章

2018年5月8日笔记

CentOS 7上安装mysql # CentOS 7 安装mysql 1. 检测系统是否自带安装 mysql rpm -qa | grep mysql 2. 若已安装,可以进行卸载 rpm -e mysql //普通删除模式 rpm -e --nodeps mysql //强力删除模式,若普通删除时提示存在依赖文件,则进行强力删除 3. 安装mysql # centOS 7 yum install mariadb-server mariadb //在CentOS 7中,由于 MySQL数据库已

2018年4月10日笔记

Python的编码 常见的支持中文的编码有:utf-8 , gbk , gb2312 常见术语:decode(解码) , encode(编码) 在Python2中,不写python代码抬头,在print中文字符时会出现乱码:在Python3中不会出现这种情况. 因为Python2默认将代码文件内容用ASCII编码处理,所以不支持中文:而Python3默认将代码文件内容用utf-8编码处理. 使Python2支持中文有3种方式: 在代码抬头中加上 coding:utf-8 在中文字符串前加 u,如

2018年4月14日笔记

函数关键字 def 函数声明 return 返回值 pass 略过,啥也不干 exit(1) 直接退出 高阶函数:可接收另一个函数作为参数的函数 常用的高阶函数有: map() reduce() filter() sorted() -> 最常用 map()函数:接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回 例1:我们有一个函数f(x)=x2,要把这个函数作用在一个list [1, 2, 3, 4]上,就可以用m

2018年4月17日笔记

装饰器 作用:在不改变原函数功能的前提下,给现有函数新增功能 装饰器通过@来使用,相当于把原函数作为参数,传给现有函数 例1: 已有函数hello()如下,在hello()函数打印结果前后各加一行字符,作为现有函数的打印结果 def hello(): print("Hello World!") 例2:在例1的基础上,原函数hello()带有参数 例3:在例2原函数带参数的情况下,现有函数startEnd()也带有参数 个人总结: 在原函数和现有函数都带参数的情况下(例3): 先传现有函

2018年4月19日笔记

类的概念与声明 类(class):用来描述具有相同属性和方法的对象的集合. 一个类定义了该集合中每个对象所共有的属性和方法. 对象是类的实例(instance). 声明一个类的一般形式如下: class ClassName(object): def funName(self): pass 一个类时,需注意以下几点: 类名首字母大写,类中函数(即方法)名首字母小写 object是所有类的父类(superclass),默认所有类都继承object object不是必填项,但建议要写上object,可

2018年4月26日笔记

内置模块:hashlib Python的hashlib提供了常见的摘要算法,如md5,sha1, sha224, sha256, sha384, sha512等等,其中md5最为常用. 什么是摘要算法呢?摘要算法又称哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示).md5算法得到的就是一个32位的16进制字符串. 一般用法如下:(python3环境中) 1 import hashlib 2 3 # python3 4 m1 = hash

2018年5月13日笔记

SQL语句复习 创建一个库 create database DB_name; 授权一个用户 grant all privileges on *.* to 'user1'@'%' identified by 'qwe123'; 创建表 create table table_name(column_name type not null); 查询 select * from tabel_name where condition1 and condition2; 增加 insert into table

2018年5月17日笔记

python操作redis set操作 sadd(name, values) 增加 scard(name) 获取 spop(name) 删除并返回set中的一个随机元素 srem(name, value) 删除set中的一个指定元素 sunion(keys) 返回指定集合的并集 sinter(keys) 返回指定集合的交集 hash操作 hset(name, key, value) 设置单个元素 hmset(name, {"k1": "v1", "k2&q

2018年5月19日笔记

进程的概念 进程是程序在计算机上的一次执行活动. 进程可分为系统进程和用户进程. 所有正在运行的进程轮流使用CPU,任何一个时间点有且只有一个进程占用CPU. 进程与线程的区别 进程 > 线程 多进程使用CPU的多个核,适合运算密集型 多线程使用CPU的一个核,核心IO密集型 python多进程 -- muiltiprocessing模块 python中的多线程无法利用多核优势,如果想要充分地使用多核CPU的资源(os.cpu_count()查看),在python中大部分情况需要使用多进程.Py