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实现发送QQ邮件的封装
Jul 14 Python
Django实现简单分页功能的方法详解
Dec 05 Python
Python subprocess模块详细解读
Jan 29 Python
30秒轻松实现TensorFlow物体检测
Mar 14 Python
Python lambda表达式用法实例分析
Dec 25 Python
python dict 相同key 合并value的实例
Jan 21 Python
django 单表操作实例详解
Jul 30 Python
Django用户认证系统 User对象解析
Aug 02 Python
Python 内置函数globals()和locals()对比详解
Dec 23 Python
python实现五子棋程序
Apr 24 Python
Django实现在线无水印抖音视频下载(附源码及地址)
May 06 Python
python实现双链表
May 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文件操作实现代码分享
2011/09/01 PHP
thinkphp在低版本Nginx 下支持PATHINFO的方法分享
2016/05/27 PHP
Laravel实现自定义错误输出内容的方法
2016/10/10 PHP
如何使用PHP给图片加水印
2016/10/12 PHP
php事务回滚简单实现方法示例
2017/03/28 PHP
PHP mongodb操作类定义与用法示例【适合mongodb2.x和mongodb3.x】
2018/06/16 PHP
善用事件代理,警惕闭包的性能陷阱。
2011/01/20 Javascript
JS 添加千分位与去掉千分位的示例
2013/07/11 Javascript
用js来获取上传的文件名纯粹是为了美化而用
2013/10/23 Javascript
jquery 选取方法都有哪些
2014/05/18 Javascript
javascript字符串对象常用api函数小结(连接,替换,分割,转换等)
2016/09/20 Javascript
js中小数向上取整数,向下取整数,四舍五入取整数的实现(必看篇)
2017/02/13 Javascript
Node.js中环境变量process.env的一些事详解
2017/10/26 Javascript
微信小程序表单验证功能完整实例
2017/12/01 Javascript
AngularJs返回前一页面时刷新一次前面页面的方法
2018/10/09 Javascript
JavaScript类的继承操作实例总结
2018/12/20 Javascript
layui表单验证select下拉框实现验证的方法
2019/09/05 Javascript
深入理解Antd-Select组件的用法
2020/02/25 Javascript
three.js 制作动态二维码的示例代码
2020/07/31 Javascript
Python实现的Google IP 可用性检测脚本
2015/04/23 Python
PyQt编程之如何在屏幕中央显示窗体的实例
2019/06/18 Python
Django中使用极验Geetest滑动验证码过程解析
2019/07/31 Python
详解Python中的format格式化函数的使用方法
2019/11/20 Python
Python标准库:内置函数max(iterable, *[, key, default])说明
2020/04/25 Python
使用tensorflow实现VGG网络,训练mnist数据集方式
2020/05/26 Python
python Tornado框架的使用示例
2020/10/19 Python
Pycharm配置autopep8实现流程解析
2020/11/28 Python
python安装sklearn模块的方法详解
2020/11/28 Python
国际鲜花速递专家:Floraqueen
2016/11/24 全球购物
华硕新加坡官方网上商店:ASUS Singapore
2020/07/09 全球购物
计算机开发个人求职信范文
2013/09/26 职场文书
建筑班组长岗位职责
2014/01/02 职场文书
即将毕业大学生自荐信
2014/01/24 职场文书
文秘档案管理岗位职责
2014/03/06 职场文书
Vue.js中v-bind指令的用法介绍
2022/03/13 Vue.js
Spring Data JPA框架的核心概念和Repository接口
2022/04/28 Java/Android