正则习题

1、用正则过滤出json串里的两个字段:

import requests
import re


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"

session = requests.session()
r = session.get(url)
html = r.text

reg = re.compile(r"skuid.*?(\d+).*?skuimgurl\":\"(\S+)\"")
result = reg.findall(html)
print(result)

2、过滤文件内的每一个upstream和location配置并分别创建文件夹存放:

import codecs
import re
import os

regUpstream = re.compile(r"\s*(upstream\s+(\S+)\s+{[^}]+})")

with codecs.open("ga10.wms5.jd.com.txt") as fu:
textList = regUpstream.findall(fu.read())
if not os.path.exists("upstream"):
os.mkdir("upstream")
os.chdir("upstream")
for item in textList:
with codecs.open(item[1], "w") as fw:
fw.write(item[0])
os.chdir("..")

regLocation = re.compile(r"(location\s+/(\S+)/\s+{\s+proxy_next_upstream.*[^]]*?})")
with codecs.open("ga10.wms5.jd.com.txt") as fl:
textLocation = regLocation.findall(fl.read())
if not os.path.exists("location"):
os.mkdir("location")
os.chdir("location")
for each in textLocation:
file = each[1] + ".locaion.conf"
with codecs.open(file, "w") as flw:
flw.write(each[0])

 

posted @ 2018-05-04 11:11  一条咸鱼的梦想  阅读(147)  评论(0编辑  收藏  举报