Python实现将绝对URL替换成相对URL的方法


Posted in Python onJune 28, 2015

本文实例讲述了Python实现将绝对URL替换成相对URL的方法。分享给大家供大家参考。具体分析如下:

一、问题:

公司一个项目需要上传图片,一开始同事将图片上传后结合当前主机拼成了一个绝对的URL(http://192.168.1.1:888/m/getimg?filename=xxx.jpg)由于同时给手机终端提供接口,在手机终端会引起一些bug,改完代码后要求将以前的uri替换成相对的URL(/m/getimg?filename=xxx.jpg),由于图片是用img标签嵌入到内容同时用a标签括起显示大图的,所以需要读取数据库并对内容进行替换

二、解决方法:

#!/usr/bin/env python
#-*- coding:utf-8 -*-
#
#
# author : cold night
# email  : wh_linux@126.com
#
import pymongo
import re
from StringIO import StringIO
conn = pymongo.Connection()
db = conn.test
def replace_url():
  regex = re.compile(r'([href¦src])=["¦\']http://.*?(/m/getimg\?.*?)["¦\']')
  results = db['test'].find()
  db_coll = db['test']
  def replace(r):
    content = r.get('content')
    if not content: return
    content = StringIO(content)
    content.seek(0)
    result = StringIO()
    for line in content.readlines():
      t = regex.sub(r'\1="\2"', line)
      result.write(t)
    result.seek(0)
    content = result.read()
    if content:
      r['content'] = content
    _id = r.get('_id')
    db_coll.update({'_id':_id}, r)
  results = [replace(i) for i in results]
if __name__=="__main__":replace_url()

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
python基础教程之字典操作详解
Mar 25 Python
Python 稀疏矩阵-sparse 存储和转换
May 27 Python
在PyCharm中实现关闭一个死循环程序的方法
Nov 29 Python
python删除列表元素的三种方法(remove,pop,del)
Jul 22 Python
python滑块验证码的破解实现
Nov 10 Python
Django 请求Request的具体使用方法
Nov 11 Python
python3中的logging记录日志实现过程及封装成类的操作
May 12 Python
Python logging日志模块 配置文件方式
Jul 12 Python
利用python做表格数据处理
Apr 13 Python
端午节将至,用Python爬取粽子数据并可视化,看看网友喜欢哪种粽子吧!
Jun 11 Python
FP-growth算法发现频繁项集——发现频繁项集
Jun 24 Python
pycharm安装深度学习pytorch的d2l包失败问题解决
Mar 25 Python
python实现将html表格转换成CSV文件的方法
Jun 28 #Python
python实现根据主机名字获得所有ip地址的方法
Jun 28 #Python
python自动zip压缩目录的方法
Jun 28 #Python
python查找指定具有相同内容文件的方法
Jun 28 #Python
python中getaddrinfo()基本用法实例分析
Jun 28 #Python
python实现搜索指定目录下文件及文件内搜索指定关键词的方法
Jun 28 #Python
分析用Python脚本关闭文件操作的机制
Jun 28 #Python
You might like
PHP面向对象学习笔记之二 生成对象的设计模式
2012/10/06 PHP
php结合ajax实现赞、顶、踩功能实例
2014/05/12 PHP
Laravel 5 框架入门(四)完结篇
2015/04/09 PHP
Jquery中的层次选择器与find()的区别示例介绍
2014/02/20 Javascript
pace.js页面加载进度条插件
2015/09/29 Javascript
JS从数组中随机取出几个数组元素的方法
2016/08/02 Javascript
微信小程序  modal详解及实例代码
2016/11/09 Javascript
Angularjs 1.3 中的$parse实例代码
2017/09/14 Javascript
jQuery ajax调用webservice注意事项
2017/10/08 jQuery
详解刷新页面vuex数据不消失和不跳转页面的解决
2018/01/30 Javascript
详解vue后台系统登录态管理
2019/04/02 Javascript
layui table 表格上添加日期控件的两种方法
2019/09/28 Javascript
js实现简单的点名器随机色实例代码
2020/09/20 Javascript
微信小程序基于高德地图API实现天气组件(动态效果)
2020/10/22 Javascript
使用PYTHON接收多播数据的代码
2012/03/01 Python
Python正则表达式介绍
2012/08/06 Python
python调用cmd命令行制作刷博器
2014/01/13 Python
Python多线程模块Threading用法示例小结
2019/11/09 Python
Python 利用邮件系统完成远程控制电脑的实现(关机、重启等)
2019/11/19 Python
wxPython实现画图板
2020/08/27 Python
Python线程threading模块用法详解
2020/02/26 Python
python 调用API接口 获取和解析 Json数据
2020/09/28 Python
英国门把手公司:Door Handle Company
2019/05/12 全球购物
在数据文件自动增长时,自动增长是否会阻塞对文件的更新
2014/05/01 面试题
大二自我鉴定范文
2013/10/05 职场文书
运动会入场词200字
2014/02/15 职场文书
厨师长岗位职责
2014/03/02 职场文书
2014年营业员工作总结
2014/11/18 职场文书
2015年药店工作总结
2015/04/20 职场文书
企业反腐倡廉心得体会
2015/08/15 职场文书
2016年第二十届“母亲节暨幸福工程救助贫困母亲活动日”活动总结
2016/04/06 职场文书
HTML+JS实现在线朗读器
2022/02/15 Javascript
MySQL的存储函数与存储过程的区别解析
2022/04/08 MySQL
CentOS7环境下MySQL8常用命令小结
2022/06/10 Servers
Win11 21h2可以升级22h2吗?看看你的电脑符不符合要求
2022/07/07 数码科技
SpringBoot Http远程调用的方法
2022/08/14 Java/Android